【问题标题】:Azure Search API C# Fuzzy / Misspellings Not Working As ExpectedAzure 搜索 API C# 模糊/拼写错误未按预期工作
【发布时间】:2017-05-25 13:27:37
【问题描述】:

我设置了一个索引,其中包含大约 1000 个项目。我正在执行以下 API 调用以获取结果。

        var parameters = new SearchParameters
        {
            Select = new[] { "pageTitle", "pageUrl", "metaDescription" },
            Top = 5,
            QueryType = QueryType.Full
        };
        var results = indexer.Documents.Search<IndexPageData>("childrens bed frames~", parameters);

从获取数据的角度来看,它按预期工作。但是,如果我将“Childrens”拼错成“Childrns”或“Chidrens”之类的东西......我是否认为模糊/拼写错误搜索会理解并返回相同或非常相似的结果?

但是我得到完全不同的结果,与正确拼写的术语相比,它们的匹配度非常差。

我是否缺少 API 的某些内容?

【问题讨论】:

  • 我认为这可能是一个语法问题(这里的关键字是单个):要进行模糊搜索,请在单个单词的末尾使用波浪号“~”符号和一个可选参数,一个数字介于 0 和 2(默认值)之间,用于指定编辑距离。例如,“blue~”或“blue~1”将返回“blue”、“blues”和“glue”。模糊搜索只能应用于术语,不能应用于短语。模糊搜索可以将一个词扩展至最多 50 个满足距离标准的词。 docs.microsoft.com/en-us/rest/api/searchservice/…
  • 我使用的是波浪号,默认值为 2?但是拼写错误往往是字母混淆或 .. ie .. ei 或缺少字母...我的印象是 Azure 搜索处理了这样的事情?
  • 只搜索“chldren~” ...应该可以。您的字符串中有 3 个单词。
  • 或者,试试“childrn~bed~frames~”也许......这绝对是语法。我不在办公桌前,但您应该可以搜索示例。
  • 您介意我根据 cmets 创建答案吗?

标签: c# azure-cognitive-search azure-search-.net-sdk


【解决方案1】:

根据亚伦的评论。我在每个单词的末尾都错过了 tilda

儿童~床~相框~

现在正在捕捉诸如“儿童床架”之类的东西......

【讨论】:

    【解决方案2】:

    “模糊”搜索目前仅适用于建议者see this。您将不得不依靠您的 language analyser 正确标记单词并为您提供预期的结果。

    【讨论】:

    • 这是不正确的,它在 Azure 中受支持。见docs.microsoft.com/en-us/rest/api/searchservice/…
    • 其实并不完全不正确。您不能使用 azure search sdk 使用模糊搜索而不弄乱 ~ tildas。对于建议,您可以使用带有选项 UseFuzzyMatching 的 SuggestParameters。 SuggestParameters 没有这样的参数。
    猜你喜欢
    • 2018-10-17
    • 2019-03-30
    • 1970-01-01
    • 2020-05-07
    • 2022-08-14
    • 2016-02-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多