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