首页 > 解决方案 > Lucene 查询不搜索单词“an”

问题描述

我编写了一个 lucene 搜索,用于搜索用户在实体的每个字段中输入的所有术语。这行得通,但现在我对“an”这个词有疑问。

具体来说,我想以任何顺序搜索单词"receptions de nouvel an",我的查询如下所示:

+description:*receptions* +description:*de* +description:*nouvel* +description:*an*

这没有给我任何结果,但我知道应该有 3 个结果。

  1. Réceptions de Nouvel 一个 MDDI/PCH
  2. 2011 年新人招待会
  3. 2010 年新人招待会

当我做这样的查询时

+description:*receptions* +description:*de* +description:*nouvel*

我得到了预期的结果。所以看来工作有问题"an".

有没有人知道这里出了什么问题以及为什么我的第一个查询不起作用?提前致谢

标签: searchlucene

解决方案


使用 EnglishStopWords CharArraySet 的标准分析器的默认设置,其中还包括 "a,an,the" ex。如果您希望将这些单词编入索引,那么您可以使用一些自定义 CharArraySet 或像在停止词中一样使用

analyzer = new StandardAnalyzer(CharArraySet.EMPTY_SET); 

推荐阅读