【问题标题】:Azure cognitive search how to exactly match the field with AND operatorAzure认知搜索如何将字段与AND运算符完全匹配
【发布时间】:2021-07-03 08:22:21
【问题描述】:

我在Azure Cognitive Search Index 中有一些实体。我想按以下方式对我的实体进行排序:符合条件的记录 <fieldName>: "value" 排在第一位,其他(具有其他值和空值)排在后面,而且,我想在订购时使用 searchText 进行搜索.

假设所有记录与searchText匹配:

{
    ...,
    <fieldName>: "value",
    ...,
},
{
    ...,
    <fieldName>: "value",
    ...,
},
{
    ...,
    <fieldName>: "value <other trash>",
    ...,
},
{
    ...,
    fieldName: null,
    ...,
}

我正在使用Azure Cognitive Search REST api 和Lucene syntax。我想出了以下解决方案:

{
  "search": "(<searchKeyWord> AND <fieldName>: 'value') OR <searchKeyWord>"
  "queryType": "full",
  "searchMode": "all"
}

它有效,但结果不完全匹配,在我有&lt;fieldName&gt;: 'value somethingelse', &lt;fieldName&gt;: 'value fff' 的结果列表中。但我希望它完全匹配。

如果我们尝试调用

{
    "search": "<fieldName>: 'value'"
    "queryType": "full",
    "searchMode": "all"
}

由于某种原因,它完全匹配。

但如果我们这样说:

{
    "search": "<searchKeyWord> AND <fieldName>: 'value'"
    "queryType": "full",
    "searchMode": "all"
}

它不完全匹配并开始返回&lt;fieldName&gt;: 'value somethingelse', &lt;fieldName&gt;: 'value fff'。即使是searchMode: all。 我还尝试使用OR 运算符而不是AND。而且它似乎以完全相同的方式工作,那么AND 运算符的意义何在?

有没有人遇到过这样的行为,能分享一下你是怎么解决的吗?

【问题讨论】:

    标签: azure full-text-search azure-cognitive-search


    【解决方案1】:

    决定顺序的是相关性,由TFxIDF公式计算得出。您应该做的是尝试检查为什么不应该在顶部的特定文档在顶部。

    看看调试会话:

    https://docs.microsoft.com/en-us/azure/search/cognitive-search-debug-session

    【讨论】:

    • 可能不是顺序问题,而是将字符串与运算符 AND 匹配的问题。因为&lt;fieldName&gt;: 'value' 的结果完全匹配,但&lt;searchKeyWord&gt; AND &lt;fieldName&gt;: 'value' 的结果不完全匹配,看起来运算符AND 被视为运算符OR。我希望它完全匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2021-10-19
    • 2014-07-14
    • 2016-10-15
    • 1970-01-01
    相关资源
    最近更新 更多