Azure认知搜索:如何正确搜索某些一字符值

时间:2020-08-20 14:57:08

标签: azure azure-cognitive-search

在Azure搜索中,我有一个包含一批文档的索引。文档是JSON,并且其中一个文档具有以下字段(已注明):

{
  "id": "1638",
  "segment": "N",
  "segmentIndicator": 1.23,     
}

和其他一些segment存在但为空的文档。

我发出了search request using POST, as described under the link。使用类似的请求

,我获得了idsegmentIndicator的有效结果
{
    "search": "id:(\"1638\")",
    "queryType": "full",
    "searchMode": "all"
}
or
{
    "search": "segmentIndicator:(\"1.23\")",
    "queryType": "full",
    "searchMode": "all"
}

,因为它们都返回所需的文档,而没有其他内容。我无法更改queryTypesearchMode,因此需要与我的搜索条件完全匹配(无需模糊/接近搜索)。

但是,当我说

{
    "search": "segment:(\"N\")",
    "queryType": "full",
    "searchMode": "all"
}

我得到的搜索结果为空,而我希望找到相同的文档。如何更改查询,以便可以通过segment参数正确找到文档?

1 个答案:

答案 0 :(得分:1)

虽然我不确定为什么单个字母不匹配,但我推测它可能被当作停用词,并且在查询的词法分析中被消除了。 search参数最适合用于真正的全文搜索方案。

听起来您需要$filter参数,它是一个严格的布尔谓词,可以对字段值(包括所有数据类型(不仅是字符串)的值)进行精确(区分大小写)匹配。您可以在Azure认知搜索here中找到有关过滤器的很好的介绍。完整的语法参考为here

这是一个如何过滤字符串字段以使其与“ N”完全匹配的示例:

segment eq 'N'