2015-06-24 98 views
0

的用例增加Solr的性能

我有潛在的數以百萬計的文檔的索引。我想對這些文檔的子集進行大約20'0000次搜索(大約25000個文檔)。這些25'000個文檔可能佔據Solr中存儲的大約100 MB(由存儲和索引文本字段組成)。

的問題

隨着索引的文檔數量的增加,查詢的性能會降低很多。例如,運行20'000次搜索,在100,000個文檔索引上打出25000個文檔需要大約4分鐘。在200'000文檔索引上運行相同的搜索大約需要20分鐘。

那麼,有沒有辦法打他們的搜索之前緩存在內存中,這些文件25000?

UPDATE

有些事情,真的幫助:

  • 減少返回的行數(在幾乎所有情況下,我不得不通過返回的結果進行迭代,並在幾乎所有情況下,不超過100個匹配結果,但我已經將行設置爲一個非常大的值,減少行數提高了2倍左右的性能,這看起來非常直觀,如果只有79個匹配d我將返回的行數設置爲100,它的執行效果比79行匹配的行更好,我將行數設置爲1000.在第一種情況下,Solr已經返回找到的項目計數並快速執行。爲什麼要有一個性能差異?)

  • 減少多線程(我已經添加了多個線程的發展框,因爲查詢還有更多的可用資源。在資源受限的生產箱就放緩下來。使用只有一個或兩個線程在我周圍2倍的速度提升)

有些事情沒有真正的幫助:

  • 分裂場查詢(我已經在使用現場查詢到處是可能的,但我是在一個FQ它們合併爲每個查詢fq=name:a AND type:b。用fq=name:a&fq=type:b將它們分開緩存(見Apache Solr documentation),並可以提高性能。但在這種情況下並沒有太大的區別。

  • 更改緩存設置在這種情況下,filterCache似乎具有最大潛力。但是,增加或更改設置並沒有太大的區別。

回答

1

被推薦爲表現的是有幾件事情:

  • 對箱足夠的空閒RAM這樣的索引文件可以在操作系統的緩存
  • 嘗試在SolrConfig Solr的緩存設置打轉轉
  • 提交後自動進行調整
  • 嘗試開發查詢來限制結果集。較大的結果集,特別是如果使用分組和分面將會導致性能下降。現在20萬個文檔索引真的很小,所以你不應該有任何問題,但我想我會提到這個,因爲當你縮放。

    • 嘗試儘可能使用過濾器查詢(FQ)。它們比字段快得多:val中的q,加上它們被緩存。
+0

感謝您的答覆,將嘗試不同的緩存選項,在這裏留言,如果有任何改善。問題是RAM非常有限,所以如果我能夠以某種方式提示solr應該緩存哪些文檔,那將是一件好事。 – chris544

+0

當然,試着先用FQ限制查詢,我有一種感覺,你會在那裏得到最大的回報。 – browskie

+0

剛剛更新了最新結果的問題。 – chris544