查询分析——电商场景

在搜索中查询关键词的意图判断直接决定搜索到的结果是否可以满足需求。OpenSearch中查询语义理解(Query Planner)就是用来理解Query搜索意图的功能;通过对Query进行一系列智能分析,将Query进行改写后再在引擎中执行检索和排序。目前查询分析可选功能包括同义词拓展、停用词省略、拼写纠错、词权重分析、类目预测,除此之外在电商场景下还有实体识别的功能。下文将简单介绍查询分析各功能的基本介绍,以及给出电商场景中使用查询分析的具体样例。

停用词功能基本介绍

根据系统内置的停用词典过滤查询中无意义的词(一般是使用频度过高的但不影响查询结果的词,比如标点符号、语气助词等)。

拼写纠错功能基本介绍

用户输入的query并不总是正确的,错误的输入可能导致查询结果不符合预期或者是无结果,因此需要对用户的输入进行拼写检查。OpenSearch的查询分析中提供的拼写检查功能,对查询词中的错误进行纠正,给出正确的查询词。并根据纠错的可信度高低,决定当前查询是否用纠错后的词进行查询。

词权重功能基本介绍

该功能主要分析了查询中每一个词在文本中的重要程度,并将其量化成权重,权重较低的词可能不会参与召回。这样可以避免当用户输入的查询词中包含一些权重低的词时,仍然按用户输入的查询词限制召回,导致命中结果过少。

同义词功能基本介绍

在实际搜索场景中,会经常出现包含同义词的表达。例如,我们希望用户在搜索苹果手机的同时,包含iPhone的内容也能被检索并呈现。在现实生活中,相同语义的表述词汇往往有很多,而用户在检索的时候很难在一条 query 中将它们全部体现,所以识别和提供同义词检索显然可以获得更高的召回率。同义词功能主要是对查询词进行同义扩展,扩大召回和查询词同义的文档。

实体识别功能基本介绍

实体识别,全称命名实体识别(Named Entity Recognition,简称NER),指对查询词中的具有特定意义的语义实体进行识别。查询分析根据识别的结果,依据实体类型的权重对查询词进行改写,使得召回的文档符合查询的意图。Query改写主要根据实体的重要性,对query进行改写,召回时保留重要性高的实体词,对重要性低的部分不影响召回,只影响算法排序。

电商场景使用查询分析样例

杨幂同款耐克修身连衣群包邮.的查询词为例,不配置查询分析前的Query如下:

query=(default:'杨幂' AND default:'同款' AND default:'耐克' AND default:'修身' AND default:'连' AND default:'衣' AND default:'群' AND default:'包邮' AND default:'.')

配置停用词后实际系统查询词为:

query=(default:'杨幂' AND default:'同款' AND default:'耐克' AND default:'修身' AND default:'连' AND default:'衣' AND default:'群' AND default:'包邮')
//说明:此处停用词将查询词中的标点过滤掉了。

再添加拼写纠错后实际系统查询词为:

query=(default:'杨幂' AND default:'同款' AND default:'耐克' AND default:'修身' AND default:'连衣裙' AND default:'包邮')
//说明:此处拼写纠错将查询词中的错误输入“连衣群”纠正了。

再添加词权重后实际系统查询词为:

query1=(default:'杨幂' AND default:'同款' AND default:'耐克' AND default:'修身' AND default:'连衣裙' RANK default:'包邮')
query2=(default:'杨幂' RANK default:'修身' RANK default:'包邮' RANK default:'同款' RANK default:'耐克' RANK default:'连衣裙')
//说明:此处配置词权重后,权重较低的词“包邮”不参与召回。且当Query1无结果时,引擎会自动触发重查(re_search),按Query2召回结果,以避免无结果召回。

再添加同义词后实际系统查询词为:

query1=(default:'杨幂' AND default:'同款' AND ((default:'耐克') OR (default:'nike')) AND default:'修身' AND default:'连衣裙' RANK default:'包邮')
query2=(default:'杨幂' RANK ((default:'耐克') OR (default:'nike')) RANK default:'修身' RANK default:'包邮' RANK default:'同款' RANK default:'连衣裙')
//说明:此处配置同义词后,将“nike”添加为了“耐克”的同义词。且当Query1无结果时,引擎会自动触发重查(re_search),按Query2召回结果,以避免无结果召回。

再添加实体识别后实际系统查询词为:

query1=(default:'杨幂' AND ((default:'耐克') OR (default:'nike')) AND default:'修身' AND default:'连衣裙' RANK default:'包邮' RANK default:'同款')
query2=(((default:'耐克') OR (default:'nike')) AND default:'连衣裙' RANK default:'修身' RANK default:'包邮' RANK default:'同款' RANK default:'杨幂')
//说明:实体识别的结果:杨幂(人名)同款(后缀)耐克/nike(品牌)修身(款式元素)连衣裙(品类)包邮(营销服务),
召回时保留重要性高的实体词,重要性低的部分不影响召回只影响排序。当Query1无结果时,
引擎会自动触发重查(re_search),按Query2召回结果,以避免无结果召回。

控制台配置流程

第一步:控制台——>召回配置——>查询分析创建查询分析:1第二步:配置规则名称、索引范围、行业类型以及功能选择(可多选)。2第三步:创建完毕后,可以进行搜索效果测试,调试无误后,设置默认规则并对线上查询生效。搜索测试:3在索引视角下将其切换为默认:4