我在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"
}
它有效,但结果不完全匹配,在我的结果列表中 <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
。而且看起来工作方式完全一样,那么 AND
有什么意义呢?运算符?
有人遇到过这样的情况吗,可以分享一下你是如何解决的吗?
最佳答案
决定顺序的是相关性,相关性由TFxIDF公式计算得出。您应该做的是尝试检查为什么不应位于顶部的特定文档位于顶部。
查看调试 session :
https://learn.microsoft.com/en-us/azure/search/cognitive-search-debug-session
关于Azure认知搜索如何使用AND运算符精确匹配字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66987477/