Azure搜索建议器

时间:2015-12-16 14:29:11

标签: azure-search

Azure搜索中的建议者只有一个SearchMode,它将匹配字段中的任何单词。虽然这可能适用于许多应用程序,但它也不适用于许多其他应用程序。 我们有什么方法可以配置建议器,以便只有在字段的开头匹配时才会发生匹配? 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

考虑创建一个自定义分析器,在索引时生成文档中单词的前缀:

{
   "name":"names",
   "fields": [
      { "name":"id", "type":"Edm.String", "key":true, "searchable":false },         
      { "name":"partialName", "type":"Edm.String", "searchable":true, "searchAnalyzer":"standard", "indexAnalyzer":"prefixAnalyzer" }
   ],
   "analyzers": [
      {
        "name":"prefixAnalyzer",
        "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
        "tokenizer":"standard",
        "tokenFilters":[ "lowercase", "my_edgeNGram" ]
      }
   ],
   "tokenFilters": [
      {
        "name":"my_edgeNGram",
        "@odata.type":"#Microsoft.Azure.Search.EdgeNGramTokenFilter",
        "minGram":2,
        "maxGram":20
      }
   ]
}

请注意,partialName字段使用标准分析器进行搜索,使用自定义(prefixAnalyzer)分析器进行索引。您现在可以发出定期搜索请求,其中前缀为单词作为查询字词。

您可以从我们关于Analysis in Azure Search的文档页面了解有关EdgeNGramTokenFilter的更多信息。

如果有帮助,请告诉我。

答案 1 :(得分:0)

目前建议中仅支持中缀匹配。