0

我有一个在 Lucene 中索引的“描述”字段。该字段包含一本书的描述。如何使用 BooleanQuery 类在此字段上实现“所有这些单词”功能?例如,如果用户输入“畅销书”,那么它应该返回在其描述中包含所有这些词的书籍。

谢谢!

4

2 回答 2

1

有两个部分可以让这个工作:

  1. 您需要正确分析传入的文档,以便单独对单个单词进行标记和索引
  2. 用户查询需要被标记化,并且标记与AND操作符结合。

对于 #1,Lucene 附带了许多分析器和标记器- 查看org.apache.lucene.analysis包中的内容。有许多不同语言、词干、停用词等的选项。

对于#2,Lucene 附带了很多查询解析器,主要在org.apache.lucene.queryParser包中。MultiFieldQueryParser可能对您有好处:要求每个术语都存在,只需致电

QueryParser.setDefaultOperator(QueryParser.AND_OPERATOR)

Lucene in Action尽管有几个旧版本,但对于分析和查询解析的更多信息仍然准确且非常有用。

于 2009-01-10T09:27:19.817 回答
0

我相信如果您通过添加所有查询部分(每个术语一个)

BooleanQuery.add(Query, BooleanClause.Occur)

并将第二个参数设置为常量BooleanClause.Occur.MUST,那么你应该得到你想要的。等效的查询语法是“+term1+term2 +term3 ...”。

于 2009-01-10T09:16:40.947 回答