我在Lucene中有一个索引的“描述”字段。这个字段包含一本书的描述。 如何使用BooleanQuery类在此字段上实现“所有这些单词”功能? 例如,如果用户输入“畅销书”,那么它应该返回在其描述中包含所有这些词的书籍。
谢谢!
答案 0 :(得分:1)
有两件事可以让它发挥作用:
AND
运算符结合使用。对于#1,come with Lucene有许多分析器和标记器可以查看org.apache.lucene.analysis
包。有许多不同语言的选项,词干,停用词等。
对于#2,Lucene还有很多查询解析器,主要在org.apache.lucene.queryParser
packagage中。 MultiFieldQueryParser
可能对你有好处:要求每个词都存在,只需致电
QueryParser.setDefaultOperator(QueryParser.AND_OPERATOR)
Lucene in Action虽然有一些旧版本,但仍然准确无误,对于有关分析和查询解析的更多信息非常有用。
答案 1 :(得分:0)
我相信如果您通过
添加所有查询部分(每个术语一个)BooleanQuery.add(Query, BooleanClause.Occur)
并将第二个参数设置为常量BooleanClause.Occur.MUST
,然后你应该得到你想要的。等效的查询语法是“+ term1 + term2 + term3 ...”。