這裏是我試圖解決的問題:如何根據lucene搜索結果查詢lucene?
- 我有多個的Lucene索引,每個都包含相同的數據結構的一個子集(它們具有相同的字段,但字段可能會或可能不會出現在一個索引中的文檔)
- 有一個全局標識符在索引之間共享。意思是,如果有4個索引,最多可以有4個文件共享一個密鑰。
- 我有一個單一的Lucene的查詢
我查詢所有指標一起使用MultiReader
,我能夠找出哪些分項指數的命中使用ReaderUtil
到來。到目前爲止好,但這裏的問題:
爲了執行(相當複雜的)合併的邏輯,我需要的文檔從所有分指數與原始查詢匹配的至少一個文檔的任意鍵。
下面是一個例子:
索引1
1:{key: "foo", name: "Name A", something: 42}
2:{key: "bar", something: 2}
索引2
27:{key: "foo", something: 2}
指數3
102:{key: "foo", name: "Name B"}
103:{key: "bar", something: 999}
現在,如果我願意爲名稱"Name A"
執行查詢,我只能從索引1文件1。
我其實需要的是從密鑰對所有指數均創下該查詢,這是與主要foo
所有文檔中的所有文件:從指數1
- DOC 1
- DOC 27指數2基於用於
name: "Name A"
原始查詢 - 文檔102從索引3
。
我可以在沒有兩個單獨查詢的情況下實現這個功能,第二個是基於第一個檢索到的密鑰的大規模OR
?有沒有更高效的方法?