当前位置: 首页 > 知识库问答 >
问题:

Lucene:没有停止词的搜索不会返回结果

孟成化
2023-03-14

我使用Lucene.net3.0.3,我不明白停止词应该如何在查询中工作。

我将此文本作为输入:停止单词

我使用StandardAnalyzer(Version.LUCENE_30)进行索引和查询。索引有一个字段标题

该字段设置为存储和分析。我也玩过不同的TermVector。对于查询解析,我使用简单的QueryParser。解析

这就是问题所在:

  • 查询标题:停止单词返回文档-这很好
  • Title:stop word的查询不会返回文档-我期待它,因为stop words已从索引中删除

然后我切换到LUCENE_24,第二个查询实际上返回文档。

我明白停止词从索引中删除,可能从查询中删除,但似乎我错过了一些基本的东西。

共有1个答案

康言
2023-03-14

虽然在分析过程中确实删除了该单词,但2.9之后的默认行为似乎是启用位置增量。因此,虽然单词被删除并且不会影响分数,但在短语查询中,预计“stop”和“word”之间会有一个(删除的)术语。在Lucene 2.4中,此功能存在,但默认情况下已关闭。您可以在StopFilter的实现中看到这一点。getEnablePositionIncrementsVersionDefault

public static boolean getEnablePositionIncrementsVersionDefault(Version matchVersion) {
    return matchVersion.onOrAfter(Version.LUCENE_29);
}

例如,如果你尝试搜索“停止进入word”,我希望你会看到3.0版本的热门。

Position增量属性留档简要给出了这个想法:

将其设置为大于1的值以禁止精确的短语匹配。例如,如果不希望短语在删除的停止词之间匹配,则可以构建一个停止词html" target="_blank">过滤器,删除停止词,并将增量设置为每个不停止词之前删除的停止词数量。然后,精确的短语查询只有在术语出现且没有中间停止词时才会匹配。

 类似资料:
  • 问题内容: 我正在使用并希望elasticsearch返回搜索的单词而不仅仅是点击。当我搜索单词并且模糊搜索找到单词时,我想知道是谁找到了它。 数据: 查询: 该查询将返回,但不知道是否找到它。 有人知道该怎么做或一个主意吗?我希望输出为。 问题答案: 您可以为此命名查询,方法是为每个查询命名。在结果中,每个匹配都将包含一个数组,其中包含匹配的查询的名称(例如及以下)。

  • 我正在用Hibernate Search 4.5.1和Spring 4.0.5版本构建一个应用程序。我正在尝试索引以下类: 我正在构建一个junit测试用例,看起来如下所示: 我还注意到在luke lucene上,一些索引词的长度最多为6个字符,例如,一首歌的艺术家是“后代”,而索引中存储的词是“the”和“offspr”。第一个可以,但第二个不应该是“后代”。为什么要截断名字?

  • 我试图用一个词作为查询来查找匹配项,但它似乎找不到。我正在使用标准分析仪,但找不到准确的结果。 我的索引文档是: 如果使用通配符查询: 它会返回内容:“敏捷的棕色狐狸跳过懒惰的狗” 如果使用术语查询: 它会返回内容:“敏捷的棕色狐狸跳过懒惰的狗” 现在,我想用“狐狸”作为我的新名词 但是我不知道哪个是正确的查询,或者如何做。我已经尝试了QueryParser、TermQuery和MultiPhra

  • 我正在努力在我们的应用程序中集成Lucene。Lucene目前正在工作,例如当我搜索“上传”时,文档中有一些叫做“上传”的文本,那么它就工作了,但是当我搜索“上传”时,那么它就不工作了。有什么想法吗? 代码: 谢谢你。

  • 问题内容: 我正在尝试使用Apache Lucene创建可搜索的电话/本地业务目录。 我有街道名称,公司名称,电话号码等字段。我遇到的问题是,当我尝试按街道名称中包含多个单词(例如“新月”)的街道进行搜索时,没有返回结果。但是,如果我尝试仅用一个词(例如“新月”)进行搜索,那么我会得到所有想要的结果。 我正在使用以下索引数据: 我的搜索是这样的: 我尝试过将通配符查询替换为短语查询,首先将整个字符

  • 我有以下问题:有几个文本文档需要解析和创建索引,但没有停止词和词干。我可以手动操作,但我从一位同事那里听说Lucene可以自动操作。我在网上搜索了很多我尝试过的例子,但是每个例子都使用了不同版本的lucene和不同的方法,没有一个例子是完整的。在这个过程结束时,我需要计算集合中每个术语的tf/idf。 更新:我现在已经用一个文档创建了一个索引。doc没有停止词,并且有词干。如何使用lucenc计算