【发布时间】:2014-03-03 04:31:22
【问题描述】:
我使用的是 Lucene.net 3.0.3,但我不明白停用词在查询中应该如何工作。
我有这个文本作为输入:Stop the word
我使用 StandardAnalyzer(Version.LUCENE_30) 进行索引和查询。索引有一个字段Title
该字段设置为存储和分析。我也玩过不同的 TermVector。 对于查询解析,我使用简单的 QueryParser.Parse 和
这是问题:
- 查询
Title:stop the word返回文档 - 这很好 -
Title:stop word的查询不返回文档 - 我期待它,因为停用词已从索引中删除。
然后我切换到 LUCENE_24 并且第二个查询实际上返回了文档。
我知道停用词已从索引中删除,并且可能从查询中删除,但似乎我缺少一些基本内容。
【问题讨论】:
-
停用词不会从查询中删除,但会在实际搜索/结果中被忽略。
-
这也是我的理解,但 TopDocs.TotalHits 返回 0 个文档。
-
您确定您输入的所有 3 个词都没有被声明为停用词并被忽略吗?不知道 lucene 是怎么做的,但是大多数其他搜索引擎会考虑出现超过 50% 的时间的词作为停用词候选。
-
我使用的是标准的英文停用词列表,其中没有“stop”和“word”。我使用 Luke.net 来检查索引,它显示 stop 和 word 作为术语。
标签: lucene