2011-03-15 61 views
0

我在項目中使用Solrj作爲Solr客戶端。Solrj(1.4.1)性能相關查詢

雖然搜索,幾句話,似乎Solrj需要更多的時間來發送響應,例如(8 - 12秒)。在搜索大部分其他詞語時,似乎Solrj只花費較少的時間。

例如,如果我在瀏覽器中發佈搜索網址,它僅以毫秒爲單位顯示QTime。

http://serverName/solr/mydata/select?q=computing&qt=myhandler&fq=category:1

但是,如果我查詢使用Solrj同樣從我的項目如下圖所示,需要很長的時間(8 - 12秒),以產生相同的結果。因此,我懷疑Solrj是否需要很長時間才能產生結果。

SolrServer server = new CommonsHttpSolrServer(url); SolrQuery query = new SolrQuery(「computing」); query.setParam(「qt」,「myhandler」); query.setFilterQueries(「category:1」); query.setHighlight(false); QueryResponse rsp = server.query(query);

我已經嘗試了POTH和GET方法。但是,兩者都花費了很多時間。

任何想法爲什麼Solrj需要這麼長的時間來處理特定的單詞。它返回大約40個文檔列表作爲搜索結果。我甚至爲此強調評論。

並以任何方式加速。

注意:我使用Tomcat並將堆大小設置爲1024 MB左右。我正在使用Solr 1.4.1版本。

謝謝,

+0

檢查SolrJ響應中的QTime。 – 2011-03-15 19:12:03

+0

cross-posted(附答案)在http://lucene.472066.n3.nabble.com/Solrj-performance-bottleneck-td2682797.html – 2011-03-17 00:51:09

回答

0

SolrJ並沒有給直接擊中Solr帶來很大的性能影響。我正在使用它,Solr中的2-3ms查詢將在12-15ms左右通過網絡返回,其中包括完整的Web堆棧和編組到Json。我懷疑你的代碼中有其他地方存在錯誤。嘗試獲取配置文件或噴灑一些打印語句,以查看時間丟失的時間。如果你要穿過網絡(我懷疑你是),可以嘗試ping一下,看看響應時間是多少。您還可以嘗試從源服務器到您的Solr服務器的curl請求,以查看原始響應時間是什麼

0

我能夠調整PHP以獲得與Java SolrJ的同等性能。然而,這是很多工作,並沒有充分的證據。 PHP的最大問題不是速度,而是內存泄漏。當您索引數千條記錄時,您必須循環遍歷它們,並在PHP中產生內存泄漏。我通過使用bash腳本在PHP中調用較小的批處理來分割PHP批處理。但是我仍然會失敗索引。 Java的SolrJ解決了內存泄漏問題,並提供了更好的可靠性。 Java是快速的,而不必跳過創造性的環節來獲得像我必須做的bash腳本和PHP的速度。

另外,請不要在SolrJ中提交記錄。打開solr配置的自動提交併允許Solr處理提交。快得多。