2013-02-18 93 views
1

我有許多字段的Lucene索引。我想用它來查找按照匹配字段數量排列的文檔,並讓結果顯示有多少字段匹配。Lucene - 返回按匹配字段數量排序的結果

在我具體的例子,在Lucene索引的文件表示網頁和領域是東西如標題,meta描述,H1文字等

如果我搜索諸如「自行車」的術語,我希望返回任何字段中包含單詞「bicycle」的所有文檔。但是,我希望相關性分數能夠指示包含關鍵字「自行車」的字段的數量。例如,如果文檔的標題和元描述中包含「自行車」,我希望該文檔的排名高於僅包含標題中包含「自行車」的文檔。我還希望能夠確定第一個文檔包含兩個匹配,其中第二個文檔僅包含一個匹配。關鍵字在特定領域的頻率並不重要。我只在乎知道它是否匹配。

我知道我可以使用BooleanQuery查找單個字段上的匹配,我可以將它們組合起來在多個字段上進行AND或OR操作,但我不確定如何執行一個查詢以返回匹配的文檔任何字段,但也返回有多少字段匹配的一些指標。

任何幫助將不勝感激!

回答

1

在Lucene中,可以通過形成如title:a web page這樣的查詢來完成searching on a field。假設您爲n個字段創建像上面那樣的查詢q1,q2,... qn。使用這些查詢進行搜索會返回存儲在列表l1,l2,... ln中的文檔ID。現在,將它們合併到一個集合S中。對於S中的每個項目,檢查該項目所屬的列表(或列表)的數量。如果我理解正確,那應該能解決你的問題。

+0

謝謝rivu。我試過這種方法,它效果很好! – nolt2232 2013-02-19 07:18:22

+0

謝謝。很高興它有幫助。 – rivu 2013-02-19 16:59:45

相關問題