2012-08-11 102 views
0

我必須索引大約1000萬個solr文檔才能進行全文搜索。這些文檔中的每一個都附加了大約25個附加的元數據字段。每個元數據字段都很小(最多64個字符)。常見查詢將涉及一個搜索詞以及用於過濾數據的多個元數據字段。所以我的問題是哪些能夠提供更好的性能和搜索響應時間。 (索引時間不是一個問題):具有多個字段的Solr性能

a。索引文本數據以及將所有元數據字段作爲存儲字段推送到solr中,並使用單個查詢爲所有字段查詢solr。 (有效solr做元數據過濾和搜索)

b。將元數據字段存儲在像Mysql這樣的數據庫中。僅對全文使用solr,然後使用solr返回的文檔id作爲數據庫的輸入,以基於其他元數據進行過濾以檢索最終的文檔集。

感謝 Arijit

回答

2

絕對是一個)。 Solr不僅僅是一個全文搜索引擎,它更多。它的篩選查詢至少與MySQL選擇一樣好/快。

b)是愚蠢的。通過選擇具有正確元數據的數據從MySQL獲取許多ID,在Solr中進行全文搜索,同時根據該ID列表進行過濾,從MySQL或Solr獲取文檔(如果選擇在其中存儲數據,而不僅僅是索引)。我無法想象這種情況會更快。

0

爲什麼複雜的事情,尤其是如果索引時間和HD空間不是問題,您應該在Solr中存儲所有數據(意思是:用戶需要的子集)。

如果您在每個文檔中存儲(和檢索)大量文本,將會出現異常。在這種情況下,在您恢復搜索結果後,從RDB獲取它會更快。無論如何,沒有人可以確定哪一個會更快,所以我建議你測試兩種方法的性能(例如使用JMeter)。另外,由於您不關心索引時間,因此您應該在索引時間而不是查詢時間進行所有處理(例如同義詞,它們可以替代提升的有效載荷,...)。

在這裏看到關於Solr的性能的一些額外的信息:

http://wiki.apache.org/solr/SolrPerformanceFactors