在PhraseQuery中使用停止词进行Lucene搜索不会返回结果

gzszwxb4  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(129)

我在使用停用词搜索时遇到问题!(that、at、the等)
我正在使用StandardAnalyzer为“Surname At Birth”这样的文本编制索引。当我使用PhraseQuery搜索(使用StandardAnalyzer)短语“Surname at birth”时,我没有收到任何结果。这是我创建PhraseQuery的代码:

foreach(var word in search.Trim().Split(' '))
                {
                    phraseQuery.Add(new Term("content", word.ToLowerInvariant()));
                }

我在调整污水时没有结果。
例如,如果我搜索“出生时的姓氏”,我会得到里面有“出生时的姓氏”的结果。
这就像StopWord“at”阻止了结果

z18hc3ub

z18hc3ub1#

非索引字也必须在查询时移除。如果您不这样做,则任何需要该字存在的查询将无法与任何文件相符。非索引字移除是在分析时完成的,也应该对查询执行分析,以取得要搜寻的词汇。(这也是进行词干分析、不区分大小写所需的。)
在analysys之后,像“Surname At Birth”(带引号)这样的查询将被转换为PhraseQuery“Surname * Birth”(中间有一个“洞”,使用第一个标记上的“位置增量”属性)。
我假设您使用的是Lucene.NET,因此请查看https://lucenenet.apache.org/docs/4.8.0-beta00009/api/queryparser/overview.html上的文档,以便为您的查询使用查询解析器。

相关问题