當前SQL'%like%'搜索用於獲取包含特定關鍵字的所有行。我們試圖用Lucene-Solr來替代MySQL。保存lucene-solr搜索結果的最快方法是什麼?
我們構建索引,
- 查詢與關鍵詞來SOLR,檢索所有對應的記錄的主鍵
- ,
- 查詢到MySQL與PK
- 進賬結果。
它變慢了。該死的!
我想在1,2,3中使用的帶寬是原因(因爲結果真的很大,像100萬以上),但我無法想出任何更好的方法。
有沒有其他方法可以通過http獲取除CSV以外的solr搜索結果? (如在MySQL文件轉儲)
當前SQL'%like%'搜索用於獲取包含特定關鍵字的所有行。我們試圖用Lucene-Solr來替代MySQL。保存lucene-solr搜索結果的最快方法是什麼?
我們構建索引,
它變慢了。該死的!
我想在1,2,3中使用的帶寬是原因(因爲結果真的很大,像100萬以上),但我無法想出任何更好的方法。
有沒有其他方法可以通過http獲取除CSV以外的solr搜索結果? (如在MySQL文件轉儲)
我們做了相同的過程來結合solr和mysql,比單個mySql全文搜索快100-1000倍。
所以你的工作流程/程序一般不是問題。 問題是:你的瓶頸在哪裏。 爲了調查這一點,你應該看看catalina,看看每個solr請求的查詢時間。在MySQL上也一樣 - 查看查詢時間/長時間運行的查詢。
我們有一個性能問題,因爲返回的PK數量非常大 - >所以mySQL查詢非常大,因爲where in()
條款很長。
後跟一個非常大的MySQL聲明那裏有大量的行返回200-1.000.000 +
但問題是,該應用/用戶不需要在onces這麼大的日期。 所以我們決定使用分頁和偏移(在solr方面)。 Solr現在只返回30-50個結果(取決於用戶應用程序環境的分頁設置)。
這工作速度非常快。
//編輯:有沒有其他方法可以通過http獲取除CSV以外的solr搜索結果?
有不同的格式,如XML,PHP,CSV,Python,Ruby和JSON。要改變這一點,你可以使用wt
參數,如....&wt=json
http://wiki.apache.org/solr/CoreQueryParameters#wt
http://wiki.apache.org/solr/QueryResponseWriter
//編輯#2
的另一種方法可以不僅是數據索引到Solr。您可以(額外)將數據存儲到solr中,以便從solr中獲取數據並在沒有MySQL數據的情況下生效。 這取決於你的數據,如果這是一種方式...
我認爲你有一個好點。但是我們正在大數據挖掘過程中使用它 - 因此總是會檢索所有數據。我懷疑mysql的查詢時間太長也是瓶頸。 –
我不確定,你的環境如何,但我們正在運行solr洞察tomcat。所以減少來自Solr的流量到你的應用程序的一種方法可以是在tomcat(solr)端啓用gzip壓縮:http://viralpatel.net/blogs/enable-gzip-compression-in-tomcat/但是這不會減少大MySQL查詢你必須發送到MySQL服務器。 –
@Daehee Han ...請把贓物帶到我的評論和編輯#2我的回答 –
你不能檢索所有的MySQL數據庫到Solr嗎?
您可以使用DIH (Data Import Handler)從MySQL中檢索所有數據並添加到Solr非常簡單。
然後,您將在一個地方獲得所需的所有信息,我認爲您將獲得更好的性能。
我不認爲,數據導入是這裏的重點。 –
我認爲他用關鍵字搜索solr來查找pk並使用此PK搜索mySQL以獲取數據。我說,如果數據全部在Solr中,它可以更有效 –
點1和2是安全的,如果solr以適當的方式調整。但我仍然不明白你的問題。 solr的默認響應是一個XML文件。你應該完全用solr替換mysql –