启用Azure搜索同义词

时间:2018-08-20 14:43:03

标签: c# azure azure-search synonym azure-search-.net-sdk

我正在尝试使用以下代码启用对某些字段的同义词映射:

substr("2013-10-01 11:22:33 UTC", 12, 19)

以及使用以下代码的定义:

public ActionResult ConfigFieldToUseSynonyn()
        {
            string searchServiceName = "xxx";
            string apiKey = "123123123123123123123123123";

            SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName, new SearchCredentials(apiKey));
            var index = serviceClient.Indexes.Get("produtos");

            index.Fields[2].SynonymMaps = new string[] { "marca-synonymmap" };
            index.Fields[7].SynonymMaps = new string[] { "marca-synonymmap" };

            serviceClient.Indexes.CreateOrUpdate(index, accessCondition: AccessCondition.IfNotChanged(index));

            return Content("OK");
        }

当我尝试使用“ dolve”查找产品时,它没有映射到“ dove”。我想念什么?

PS:这些字段是可搜索的并且是字符串类型。

1 个答案:

答案 0 :(得分:1)

在同义词映射表的定义中,“ @”将字符串内容标记为逐字文字,规则变为dolve,douve => dove \ n,最后带有“ \ n”。此同义词规则将查询“ dolve”重写为“ dove \ n”。如果删除同义词定义中的“ @”前缀或删除新行“ \ n”,则同义词将按预期工作。

内特