我在 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
运算符的意义何在?
有没有人遇到过这种行为,能分享一下你是怎么解决的吗?
答案 0 :(得分:0)
决定顺序的是相关性,由TFxIDF公式计算。您应该做的是尝试检查为什么不应该在最上面的特定文档在最上面。
看看调试会话:
https://docs.microsoft.com/en-us/azure/search/cognitive-search-debug-session