所有这些词都有特色

时间:2009-01-10 08:37:29

标签: lucene

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

谢谢!

2 个答案:

答案 0 :(得分:1)

有两件事可以让它发挥作用:

  1. 您需要正确分析传入的文档,以便将单个单词标记化并单独编制索引
  2. 需要对用户查询进行标记,并将令牌与AND运算符结合使用。
  3. 对于#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 ...”。