2013-01-04 90 views
1

當前SQL'%like%'搜索用於獲取包含特定關鍵字的所有行。我們試圖用Lucene-Solr來替代MySQL。保存lucene-solr搜索結果的最快方法是什麼?

我們構建索引,

  1. 查詢與關鍵詞來SOLR,檢索所有對應的記錄的主鍵
  2. 查詢到MySQL與PK
  3. 進賬結果。

它變慢了。該死的!

我想在1,2,3中使用的帶寬是原因(因爲結果真的很大,像100萬以上),但我無法想出任何更好的方法。

有沒有其他方法可以通過http獲取除CSV以外的solr搜索結果? (如在MySQL文件轉儲)

+0

點1和2是安全的,如果solr以適當的方式調整。但我仍然不明白你的問題。 solr的默認響應是一個XML文件。你應該完全用solr替換mysql –

回答

0

我們做了相同的過程來結合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數據的情況下生效。 這取決於你的數據,如果這是一種方式...

+0

我認爲你有一個好點。但是我們正在大數據挖掘過程中使用它 - 因此總是會檢索所有數據。我懷疑mysql的查詢時間太長也是瓶頸。 –

+0

我不確定,你的環境如何,但我們正在運行solr洞察tomcat。所以減少來自Solr的流量到你的應用程序的一種方法可以是在tomcat(solr)端啓用gzip壓縮:http://viralpatel.net/blogs/enable-gzip-compression-in-tomcat/但是這不會減少大MySQL查詢你必須發送到MySQL服務器。 –

+0

@Daehee Han ...請把贓物帶到我的評論和編輯#2我的回答 –

0

的Solr提供了一種方法,結果導出爲CSVJSON
提供高達70仍然是一個非常大集。你可以隨時分批做。

0

你不能檢索所有的MySQL數據庫到Solr嗎?

您可以使用DIH (Data Import Handler)從MySQL中檢索所有數據並添加到Solr非常簡單。

然後,您將在一個地方獲得所需的所有信息,我認爲您將獲得更好的性能。

+0

我不認爲,數據導入是這裏的重點。 –

+0

我認爲他用關鍵字搜索solr來查找pk並使用此PK搜索mySQL以獲取數據。我說,如果數據全部在Solr中,它可以更有效 –

相關問題