【问题标题】:Azure Search - exact match as first or single resultAzure 搜索 - 与第一个或单个结果完全匹配
【发布时间】:2016-09-29 13:27:01
【问题描述】:

我正在使用基于丰富的 Lucene 查询解析器语法的 Azure 搜索。我将“~1”定义为距离的一个符号的附加参数)。但我面临的问题是,即使存在完全匹配,实体也没有排序。 (例如,“blue~1”会返回“blues”、“blue”、“glue”。或者当搜索像“P002”这样的产品SKU时,我会得到结果“P003”、“P005”、“P004”、“ P002”、“P001”、“P006”) 所以我的问题是:有什么方法可以定义完全匹配的实体必须在列表中的第一位,或者即使我使用模糊搜索“~1”也是单一搜索结果?

【问题讨论】:

    标签: azure lucene azure-cognitive-search


    【解决方案1】:

    使用Lucene Query syntax,您可以提升单个子查询,例如:term^2 | term~1 - 这意味着“查找与 'term' 或 'term' 匹配且编辑距离为 1 的文档,并相对于模糊匹配对精确匹配进行更高的评分两倍。

    search=blue^2|blue~1&queryType=full

    由于文档分数为function of term frequency and inverse document frequency,因此无法保证完全匹配总是在结果集中排在第一位。如果模糊子查询将输入术语扩展为文档语料库中非常独特的术语,则您可能需要提高提升因子(在我的示例中为 2)。一般来说,依靠相关性分数进行排序并不是一个实际的想法。请查看我在以下帖子中的回答以获取更多信息:Azure Search scoring

    如果这有帮助,请告诉我

    【讨论】:

    • 谢谢!这行得通,但我只做了一个区别:据我所知,“OR”运算符将得到“blue^2”或“blue~1”或两者的结果。所以正如你所说,不能保证完全匹配总是第一个。经过一些实验,我通过 search=(blue^2)|(blue~1)&queryType=full 实现了“严格或”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多