首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure搜索中的同义词图,同义词短语

Azure搜索中的同义词图,同义词短语
EN

Stack Overflow用户
提问于 2018-07-05 22:20:25
回答 1查看 792关注 0票数 3

我试图在Azure搜索中使用同义词地图,我遇到了一个问题。我想有几个词和短语映射到一个单一的搜索查询。

换句话说,当我搜索的时候:

产品123,product0123,产品0123

我希望搜索返回查询短语的结果:

product123。

在阅读了教程之后,一切看起来都很直接。

我使用的是.Net Azure.Search SDK5.0,因此我做了以下工作:

代码语言:javascript
复制
var synonymMap = new SynonymMap
{
     Name = "test-map",
     Format = SynonymMapFormat.Solr,
     Synonyms = "product 123, product0123, product 0123=>product123\n"
};  
_searchClient.SynonymMaps.CreateOrUpdate(synonymMap);

我在其中一个搜索字段上使用地图

代码语言:javascript
复制
index.Fields.First(x => x.Name == "Title").SynonymMaps = new[] {"test-map"};

到目前一切尚好。现在,如果我搜索product0123,我就会得到product123的结果,正如我所期望的那样。但是,如果我搜索短语产品123或产品0123,我会得到一堆不相关的结果。几乎就像同义词映射不适用于多个单词项一样。

所以,我的问题是,我是不正确地使用同义词映射,还是这些映射只适用于单个单词的同义词?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-05 23:14:35

product 123product 0123的短语是双引号吗?短语必须是双引号("product 123")。双引号是短语搜索的运算符,在同义词情况下,它们确保分析短语中的术语,并将其与同义词地图中的规则作为短语进行匹配。没有它,查询解析器将未引用的短语分离为单个术语,并尝试对单个术语进行同义词匹配。在这种情况下,查询变成product OR 123

这份文件解释了如何解析查询(第一阶段)和如何分析查询(第二阶段)。同义词在第二阶段的应用。

为了回答你在评论中的第二个问题,不幸的是,需要双引号来匹配多个单词同义词。但是,作为应用程序开发人员,您可以完全控制传递给搜索服务的内容。例如,给定来自用户的查询product 123,您可以在查询被传递到搜索服务之前重写这个查询,以提高查询的准确性和召回率。短语搜索或邻近搜索可用于提高精度,而通配符(如模糊或前缀搜索)可用于提高查询的召回率。您将将查询product 123重写为类似于"product 123"~10 product 123的内容,同义词将应用于查询的短语部分。

内特

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51200616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档