【问题标题】:Azure Search synonyms not being taken into consideration未考虑 Azure 搜索同义词
【发布时间】:2019-11-15 14:45:53
【问题描述】:

我正在构建一个由 Azure 搜索支持的机器人,我们定义了一个同义词映射,将其添加到现有索引中,但是当我们按仅作为同义词存在且未编入索引的术语进行搜索时,搜索结果与添加之前相同同义词映射,似乎同义词被完全忽略了。

有没有办法检查地图是否被考虑在内以及为什么我的查询没有考虑到它们?

【问题讨论】:

  • 您好,您能否分享一个示例查询、您认为应该应用的同义词映射中的规则以及您希望查询匹配的文档?谢谢!
  • 嗨@Yahnoosh,这是我创建的地图:{ "name":"topicmap", "format":"solr", "synonyms": " IoT, Internet of Things, Internet of Thing, iot, IOT => iot\n" } 我的文档用术语 iot 进行了索引,但是如果我通过“物联网”进行搜索,最好的分数是get 是 0.009135721,如果我通过 IoT 搜索,我会得到 4 分。
  • 我很困惑。首先,您报告未应用同义词,并且未检索具有同义词的文档。现在,您的评论看起来好像正在检索文档,但分数与您预期的不一样。请澄清您的问题,并在理想情况下显示哪些文件已退回以及您希望匹配哪些文件。
  • 嗨@Yahnoosh,我的意思是,如果我通过“iot”查询,我会得到高分的结果,因为文档有这个词。我想要的是通过我创建的同义词(物联网)得到类似的结果,该同义词应该解析为“iot”,我希望分数会很高,但是我得到的分数与创建之前的分数相同同义词映射并将其应用于字段。
  • 通过在一组术语周围加上引号,您可以通知查询解析器您希望将它们一起处理,以便将它们与同义词映射中的术语进行匹配。此处提出了类似的问题:stackoverflow.com/questions/51200616/…

标签: azure-cognitive-search


【解决方案1】:

调用 /indexes/[your index name]?api-version=2017-11-11 端点以获取索引定义,然后检查同义词映射是否附加到正确的字段,应如下所示:

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

如果没有主题图,您应该通过调用同一端点的 POST 方法来更新您的索引定义。

【讨论】:

  • 是的,它在那里
【解决方案2】:

我为索引中的所有字段添加了同义词字段属性。我们必须在创建索引时执行此步骤。这对我来说是有效的。

【讨论】:

    【解决方案3】:

    我通过将 synonymMaps 字段添加到索引中的所有其他相关字段来解决问题。例如,我的索引有位置字段,我修改它如下所示: { “名称”:“位置”, “类型”:“集合(Edm.String)”, “可搜索”:是的, “可过滤”:是的, “可检索”:是的, “可排序”:错误, “面”:假, “关键”:假, “索引分析器”:空, “搜索分析器”:空, “分析器”:“en.lucene”, “同义词映射”:[ “我的同义词” ] }

    所以你也应该将同义词添加到其他字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2023-04-04
      相关资源
      最近更新 更多