【问题标题】:Azure Cognitive Search standard Lucene analyzer wildcard and fuzzy search issuesAzure 认知搜索标准 Lucene 分析器通配符和模糊搜索问题
【发布时间】:2020-05-21 14:51:34
【问题描述】:

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

“模糊搜索”和“通配符搜索”等高级搜索功能面临严重问题。 目前在我的索引字段上使用标准 Lucene 分析器。

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

模糊搜索也有同样的问题。如果我搜索“终止~”,我根本没有得到任何结果。

如果我使用“Microsoft Analyzer”,情况似乎会更好。至少模糊搜索和通配符至少返回一些东西......

这是一个错误吗?或者这是预期的行为?可能我误解了文档?

【问题讨论】:

    标签: azure-cognitive-search fuzzy-search


    【解决方案1】:

    您说得对,这是由于 EN.Lucene 分析器如何标记文本。 Lucene 分析器对每个术语应用积极的词干提取。例如,terminate、termination、terminates 都将被标记为索引中的标记“termi”。另一方面,查询中的术语使用通配符或模糊搜索are not analyzed at all

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

    另一方面,Microsoft 分析器更先进一些,使用词形还原而不是词干提取。这意味着所有生成的标记都应该是有效的英文单词。例如,terminate、terminate 和termination 将在索引中保持完整,对于非常依赖通配符和模糊搜索的场景来说,这将是一个更可取的选择。

    【讨论】:

    • 很好很详细的解释!非常感谢! :)
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2014-06-11
    • 1970-01-01
    • 2014-05-04
    • 2018-04-20
    相关资源
    最近更新 更多