Azure搜索-是否可以在单个字段(例如ElasticSearch)上使用多个分析器?

韦伯特

我正在比较Azure搜索和ElasticSearch的功能和性能。
我正在查看每个字段是否可以有多个分析仪。
在ElasticSearch中,我可以执行此操作

      "Name": {
        "type": "text",
        "analyzer": "ingram",
        "fields": {
          "partial": {
            "type": "text",
            "analyzer": "customWhitespace",
            "boost": 2
          },
          "exact": {
            "type": "text",
            "analyzer": "customKeyword",
            "boost": 3
          }
        }
      },

由于两种技术相似,因此我尝试在Azure中复制相同的结构

    {
      "name": "text",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "sortable": true,
      "analyzer": "ingram",
      "fields": [
        {
            "name": "partial",
            "type": "Edm.String",
            "searchable": true,
            "analyzer": "customWhitespace",
        }
        ]
    },

但是在创建索引时出错

The request is invalid. Details: definition : The field 'text' of type 
'Edm.String' cannot have sub-fields because it is not a complex type.

我发现了这篇文章《Azure搜索:实现部分单词搜索》,它似乎在说您必须创建一个辅助字段并将数据第二次加载到该字段中才能提供相同的功能。

有没有一种方法可以提供相同的功能,而不必第二次将数据加载到另一个字段中?这只是人为地增加了我的索引大小。

利亚姆·卡瓦纳-MSFT

我认为这里有两个单独的问题。第一种是您创建索引(或更具体地说是字段)的方式。在索引创建中,您对其进行了结构化以创建一个字段数组。在Azure认知搜索中,这就是我们所说的复杂类型,您可以在此处找到更多信息如果要创建多个字段,则无需将它们设置为复杂类型内的设置字段。您可以只在索引的根目录下创建它们。

对于您的原始问题,您只能将单个分析器(或自定义分析器)放在单个字段中。这就是您在有关创建重复字段的问题中发表评论的原因。鉴于您似乎还希望将自定义提升应用于不同的字段,因此这种方法似乎也可以使您做到这一点。

希望有帮助,利亚姆

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章