【问题标题】:Azure Cognitive Search - match exact phrase for some fieldsAzure 认知搜索 - 匹配某些字段的确切短语
【发布时间】:2021-10-19 02:17:41
【问题描述】:

我的 Azure 认知搜索中有不同的字段,但让我向您展示一些我遇到的问题。

{
   "name": "Name",
   "type": "Edm.String",
   "searchable": true,
   "filterable": false,
   "retrievable": true,
   "sortable": true,
   "facetable": false,
   "key": false,
   "indexAnalyzer": null,
   "searchAnalyzer": null,
   "analyzer": "standard.lucene",
   "synonymMaps": []
}

{
    "name": "Code",
    "type": "Edm.String",
    "searchable": true,
    "filterable": false,
    "retrievable": true,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": "keyword",
    "synonymMaps": []
}

正如您在上面看到的,我为 Name 设置了分析器 standard.lucene(我为 NameEn 等其他字段设置了特定语言)和 Code 字段的关键字分析器。

例如,当我按 1-1 搜索时,它会查找 1 而不是 1-1。我尝试使用双引号,但似乎我也不起作用(“1-1”)。

问题是我得到的结果是数字 1 的名称,而不是 1-1 的代码。

你知道我该怎么做吗?我想我应该搜索整个短语,例如:“1-1”查询的其余部分。

【问题讨论】:

  • 标准 Lucene 不标记特殊字符,您是否尝试过使用 en.microsoft 分析器?我调整了它,确实为 1-1 整体创建了一个令牌
  • @Joseandresc 我并不总是有英文内容,这就是我使用标准 Lucene 的原因。我找不到任何来自 Microsoft 的通用分析器。

标签: c# azure-cognitive-search


【解决方案1】:

当您发送查询时,所有可搜索字段的分析器都会对其进行分析,然后将对所有可搜索字段执行标记化查询(每个字段不同)。

您可以向analyze 端点发送查询,以调试每个分析器如何处理您的查询 - https://serviceName.search.windows.net/indexes/index-name/analyze?api-version=2020-06-30

在你的情况下:

{
    "text": "1-1",
    "analyzer": "standard"
}

Name 字段返回这些令牌

 "tokens": [
        {
            "token": "1",
            "startOffset": 0,
            "endOffset": 1,
            "position": 0
        },
        {
            "token": "1",
            "startOffset": 2,
            "endOffset": 3,
            "position": 1
        }
    ]

对于Code 字段

{
    "text": "1-1",
    "analyzer": "keyword"
}

你得到

"tokens": [
        {
            "token": "1-1",
            "startOffset": 0,
            "endOffset": 3,
            "position": 0
        }
    ]

因此,通过这样的查询,您实际上是在寻找具有

的文档

Name=1 | Code=1-1

如果您只想在选定的字段中搜索,您可以使用searchFields 参数指定它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多