考虑一个所有文档都有以下字段的场景
要求对于电子邮件,分数应为100(如果完全匹配)或0。 对于其余字段,根据编辑距离为0到100。
假设在索引中记录如下
1.abcd @ gmail.com,Peterr,柏,开发人员 2.xyz @ yahoo.com,史蒂夫,史密斯,管理器
查询是在模糊搜索所有字段和参数之类的 的 ABCD @ gmail.com,宠物,PAR,DEVL
搜索结果应该有第一条记录的分数,如
电子邮件评分+姓氏评分+名字评分+职称评分
= 100 + 50(' Peterr和Pet'的约编辑距离)+ 50(' Peterr和Parker'约编辑距离)+ 44(&#编辑距离约为39; Devl和开发人员')
= 244
同样,搜索结果应该以类似的方式得分。
我刚检查过Azure搜索评分有权重,但我认为那些在这种情况下会有很大帮助。我们要找的主要方法是找到一种方法,为每条记录返回搜索分数通过Azure搜索将符合我上面讨论的分数
答案 0 :(得分:4)
为了澄清,您需要的是得分公式是查询词与索引词之间的编辑距离的函数 - 距离越短,得分越高。不幸的是,这在Azure搜索中是不可能的。
Azure搜索引擎分两个阶段执行搜索查询:检索和评分。
在检索期间,搜索lexical analyzer处理的查询字词在倒排索引中查找。具有这些条款的文件将被退回。当您使用模糊搜索时,我们通过添加来自给定查询词edit distance内的倒排索引的术语来扩展搜索查询 - 模糊扩展。这样您的查询就可以匹配更多文档。
在评分期间,我们使用Lucene scoring formula为检索到的文档分配相关性分数。此公式基于TF/IDF。实际上,这意味着匹配罕见术语的文档将在结果集中排名更高。
重要的是要知道Lucene评分公式仅适用于与原始查询字词匹配的文档和通过模糊扩展添加的术语。匹配通过前缀扩展或正则表达式/通配符扩展添加的术语的文档将获得常数分数1.这样,这些文档将在结果集中,但不会对基于术语频率的排名产生影响。
希望有所帮助