我有一個「描述」字段索引在Lucene.This字段包含書的描述。 如何使用BooleanQuery類在此字段上實現「所有這些單詞」功能? 例如,如果用戶輸入「暢銷書」,那麼它應該返回在其描述中包含所有這些詞的書。所有這些詞的功能
謝謝!
我有一個「描述」字段索引在Lucene.This字段包含書的描述。 如何使用BooleanQuery類在此字段上實現「所有這些單詞」功能? 例如,如果用戶輸入「暢銷書」,那麼它應該返回在其描述中包含所有這些詞的書。所有這些詞的功能
謝謝!
有兩件得到這個工作:
AND
運營商相結合。#1,也有一些分析儀和斷詞是come with Lucene的 - 已經在org.apache.lucene.analysis
包一看。有很多不同語言的選項,詞幹,停用詞等等。
對於#2,還有很多隨Lucene一起提供的查詢解析器,主要在org.apache.lucene.queryParser
包裝數量中。 MultiFieldQueryParser
可能是對你有好處:要求每學期必須存在,只是叫
QueryParser.setDefaultOperator(QueryParser.AND_OPERATOR)
Lucene in Action,雖然有幾個版本老了,依然是準確的分析和查詢解析的更多信息是非常有用的。
我相信如果你通過
BooleanQuery.add(Query, BooleanClause.Occur)
添加所有查詢部分(每學期一個),並將其設置爲常數BooleanClause.Occur.MUST
秒參數,那麼你應該得到你想要的。等效查詢語法爲「+ term1 + term2 + term3 ...」。