Azure认知搜索标准Lucene分析器通配符和模糊搜索问题

问题描述 投票:0回答:1

这是Azure认知搜索团队的问题。

使用“模糊搜索”和“通配符搜索”等高级搜索功能来解决严重问题。目前在我的索引字段上使用Standard Lucene Analyzer。

搜索查询'终止的系统返回结果,结果包含:终止,终止,终止等,因此结果看起来不错。但是,当我尝试搜索“ * terminat ****”(当然使用queryType = full参数)时,搜索未返回任何结果。根据文档,通配符搜索应返回*“终止”,“终止”,“终止” ***和其他以“ terminat *”开头的术语。

与模糊搜索存在相同的问题。如果我搜索“ terminate〜”,则根本没有任何结果。

如果我使用'Microsoft Analyzer,情况似乎会更好。至少模糊搜索和通配符至少返回某些内容...

这是错误吗?还是这是预期的行为?可能我误解了文档?

azure-cognitive-search fuzzy-search
1个回答
2
投票

您完全正确,这是由于EN.Lucene分析器如何标记文本。 Lucene分析器对每个术语都采用积极的词干。例如,terminate,终止,terminates将全部标记为索引中的标记“ termi”。另一方面,使用通配符或模糊搜索are not analyzed at all的查询中的术语。

这意味着在索引编制时,您的文档在反向索引中仅具有标记“ termi”,但是在搜索时,术语“ terminat”保持完整(而不是简化为“ termi”)。模糊搜索的限制为2个编辑距离,因此“ terminat”将永远不会与仅使用模糊搜索的“ termi”匹配。通配符也无济于事,因为“ terminat *”也不匹配。

另一方面,Microsoft分析器更高级,并且使用了词形化而不是词干分析。这意味着所有生成的令牌应为有效的英语单词。例如,终止,终止和终止将大部分保留在索引中,并且在很大程度上取决于通配符和模糊搜索的情况下将是首选方法。

© www.soinside.com 2019 - 2024. All rights reserved.