【发布时间】: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"
}
它有效,但结果不完全匹配,在我有<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 运算符的意义何在?
有没有人遇到过这样的行为,能分享一下你是怎么解决的吗?
【问题讨论】:
标签: azure full-text-search azure-cognitive-search