上下文Lucene/Solr如何在多領域/多面搜索中實現高性能?
這是一個主要關於Lucene(或可能是Solr)內部問題。主題是分面搜索,其中搜索可以沿着對象的多個獨立維度(方面)(例如大小,速度,汽車的價格)發生。
當與關係數據庫一起實現時,對於大量方面而言,多字段索引沒有用處,因爲可以按任意順序搜索方面,因此使用具有低可能性的特定有序多索引並創建所有可能的指數的排序是無法忍受的。
Solr被廣告應對多面搜索任務,如果我認爲正確必須與Lucene連接(假定)在多字段查詢(文檔的字段與對象的facet相關) 。
問題
的倒排索引的Lucene的可以存儲在關係數據庫中,並以自然的匹配文件的交點也可以用單場指數RDBMS來實現平凡。
因此,Lucene假設除了基於倒排索引的交叉匹配文檔之外,還有一些用於多字段查詢的高級技術。
所以問題是,這個技巧/竅門是什麼?更廣泛地說:爲什麼Lucene/Solr理論上可以實現比RDBMS更好的分面搜索性能(如果是這樣)?
注意:我的第一個猜測是Lucene會使用一些空間分區方法來劃分從文檔字段構建的向量空間作爲維度,但據我瞭解,Lucene不是純粹的基於向量空間的。
謝謝。您指向的帖子寫道:「對Lucene的真正優化來自於這樣一個事實,即您從不搜索與查詢匹配的所有文檔,而是搜索頂部k。」。在多面搜索的情況下,我認爲所有比賽都必須考慮在內。 – ron 2011-04-06 16:13:31
@ron:是的,我不知道Lucene的分面查詢性能非常好。但我不是這方面的專家。 – Xodarap 2011-04-06 23:45:38