Azure 认知搜索如何使用 AND 运算符精确匹配字段

时间:2021-04-07 13:47:32

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

我在 Azure Cognitive Search Index 中有一些实体。我想按以下方式对我的实体进行排序:首先匹配条件 <fieldName>: "value" 的记录,然后是其他(具有其他值和空值)的记录,而且,我想用 {{1 }} 下单时。

假设所有记录都与 searchText 匹配:

searchText

我将 { ..., <fieldName>: "value", ..., }, { ..., <fieldName>: "value", ..., }, { ..., <fieldName>: "value <other trash>", ..., }, { ..., fieldName: null, ..., } api 与 Azure Cognitive Search REST 一起使用。我想出了以下解决方案:

Lucene syntax

它有效,但结果不完全匹配,在我有 { "search": "(<searchKeyWord> AND <fieldName>: 'value') OR <searchKeyWord>" "queryType": "full", "searchMode": "all" } 的结果列表中。但我希望它完全匹配。

如果我们尝试调用

<fieldName>: 'value somethingelse', <fieldName>: 'value fff'

它完全匹配是因为某种原因。

但如果我们这样说:

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

它不完全匹配并开始返回 { "search": "<searchKeyWord> AND <fieldName>: 'value'" "queryType": "full", "searchMode": "all" } 。即使使用 <fieldName>: 'value somethingelse', <fieldName>: 'value fff'。 我还尝试使用 searchMode: all 运算符而不是 OR。而且它的工作方式似乎完全相同,那么 AND 运算符的意义何在?

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

1 个答案:

答案 0 :(得分:0)

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

看看调试会话:

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