我有一个在 Lucene 中索引的“描述”字段。该字段包含一本书的描述。如何使用 BooleanQuery 类在此字段上实现“所有这些单词”功能?例如,如果用户输入“畅销书”,那么它应该返回在其描述中包含所有这些词的书籍。
谢谢!
我有一个在 Lucene 中索引的“描述”字段。该字段包含一本书的描述。如何使用 BooleanQuery 类在此字段上实现“所有这些单词”功能?例如,如果用户输入“畅销书”,那么它应该返回在其描述中包含所有这些词的书籍。
谢谢!
有两个部分可以让这个工作:
AND
操作符结合。对于 #1,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 ...”。