2014-02-21 83 views
3

我有一種情況,我必須用多個OR關鍵字在Solr中搜索文檔。現在,關鍵字的數量可能會高達5000,這會導致5000條或條件的查詢非常大。這導致Solr服務器掛起。有沒有其他方法可以設計查詢的工作。查詢的短樣品下面給出或在索爾搜索

tweet_id:337931022601699328或337931064293081089或337931089538584576或337931098761871361或337931138851016704或337931143099854848或337931160082591745或337931163857453056或337931230819516416或337931239996665857或337931287518126080或337931322850951168或337931325648535553或337931331398934528或337931413057830912或337931442363441152或337931448629731329或337931453344129025 OR 337931465016877056或337931482066726912或337931514388029442或337931533149155328或337931645527130114或337931704935256064或337931784459268096或337931845545103360或337931889086185472或337931892668108801或337931963983855617或337932154212319233或337932176454721536或337932193198374912或337932229659459584或337932437290090496或337932436807749632或337932436828725250或337932437449474048或33793244851825 0496 OR 337932458832035843或337932458634915840或337932458278387712或337932474246119425或337932476209041409或337932477408620544或337932480478842880或337932478775959554或337932480566931456或337932478763376640或337932481841999872或337932479337992192或337932479296045057或337932479333797889或337932484614434816或337932484606038017或337932482777317376或337932484664758272或337932482785718273或337932484589273088或337932487399444481或337932489031032833或337932489114923008或337932486573166592 OR 337932490704560130或337932489144270848或337932488762601472或337932492097069056或337932497780355072或337932498900230144或337932499722321921或337932514431729665或337932561806409731或337932567284154368或337932567300935680或337932574603214848或337932571134533632或337932574674518016或337932575484026881或337932578206121984或337932582215892994或337932586653454336或337932584917024768或337932592986865664或337932597017587712 ....

我打算根據幾個字段來分析結果。

+3

你想達到什麼目的?你爲什麼試圖向Solr提供這些ID?如果您向我們提供您的用例,我們可能會提供一種更好的解決方法。因爲餵食solr與ID負載不是它的'甜點。 – cheffe

+0

我同意@cheffe,如果所有這些推文屬於特定用戶,那麼通過user_id進行查詢,如果它們屬於相同的哈希標籤,則查找哈希標籤。無論如何,提供更多的信息來澄清你的用例,這樣我們可以更好地幫助你。 – mjalajel

+0

我的用例是我有一個推文ID列表。現在我想從推文ID的推文中得到一些字段的結果。我遵循的方法是,我正在通過對分面查詢中的推文ID進行「或」操作來準備查詢。現在,推特id的列表可能會上升到將近10k,這會導致solr無法處理的非常大的查詢。歡迎解決該問題或該用例的任何備用解決方案。 – user3335918

回答

0

我不確定這個解決方案是否會幫助你,但是爲你的問題嘗試了一些東西。

無論您提供給Solr的查詢是什麼,首先它都會將該查詢解析爲可理解的格式。然後Solr執行結果。 在查詢Solr之前,您必須先進行一些計算。我們來看看下面的場景來解決你的用例。

假設您有總計5000 tweet_id。您必須在約4000 tweet_id上執行查詢。在這種情況下,最好查詢其他(5000-4000 = 1000)1000 tweet_id,並使用否定查詢。所以,你的查詢會傳遞更少的值。

因此,請嘗試使用否定和查詢而不是OR查詢來查詢其餘的tweet_id。

0

如果我是你,我會創建一個新的字段來表示這個custom_list_id ..每當你生成一個新的列表時,索引新的數據,然後用列表查詢。