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

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

我在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/

相关文章:

powershell - 修复 "Unable to check the status of the firewall"的 `Set-WSManQuickConfig`

sql-server - SQL Server 全文搜索未找到我的行

postgresql 全文搜索查询太慢

c# - 如何使用 Azure 搜索 SDK 筛选特定列

azure - 在 Azure 逻辑应用中使用 'create group container' 时出现“InvalidContainerGroupUpdate”

php - Azure web.config 限制 IP 地址页面刷新异常

azure - 将现有资源导入 Terraform 状态文件时出错

ruby-on-rails - 如何从 pg_search 多重搜索中获取结果

azure-cognitive-search - 如何在 Azure 搜索中筛选空数组

azure - 使用 pdf 文件及其元数据进行 Azure 认知搜索