【问题标题】:Azure Search - giving our clients what they need with regard to scores/ranks - percentage matchAzure 搜索 - 为我们的客户提供他们在分数/排名方面的需求 - 百分比匹配
【发布时间】:2017-09-05 05:02:13
【问题描述】:

几个月来,我们一直在使用 Azure 搜索作为我们的生产搜索服务,我们的客户开始对排名和评分的灵活性表示担忧 - TF-IDF 比率对他们来说毫无意义(我可以理解) 并且他们习惯于从之前的供应商处看到 百分比 匹配项。

请务必了解,我们的客户主要查询人名。这些人的姓名存在于我们的记录中,既存在于他们自己的字段中,也存在于非结构化文本的附加字段中。例如,当他们查询 John Anderson 时,他们正在寻找与姓名 John Anderson 具有一定百分比匹配的记录。他们不太关心约翰·安德森在文档中出现了多少次。

他们想要的是能够自定义他们的结果,例如,只返回与查询名称“90% 匹配或更高”的结果。我们不知道从哪里开始,因为我们看到 Azure 搜索提供给我们的唯一东西是 TF-IDF 评分。我们如何才能将我们对结果的理解转换为我们真正不关心的百分比匹配与词频? Azure 搜索可以处理这个问题吗?如果我们在选择它作为我们的生产搜索服务方面已经走了这么远,并且我们不能以他们离开的供应商所习惯的方式向我们的客户展示结果,他们就会离开我们,不幸的是我会输我的工作......

MS Azure 搜索人员...请帮忙!

【问题讨论】:

  • 您能否更具体地说明您想要如何得分? “90% 匹配”是什么意思?无法禁用基于 TF/IDF 的评分,但在某些情况下,可能有一些方法可以模拟您想要提升事物的方式。如果你能分享你对计算商店的想法,我们可以看看我们如何近似它。
  • 嗨@PabloCastro 以一个高级简单示例开始:客户搜索“John Anderson”。任何具有确切短语“John Anderson”的文档都将被视为 100% 匹配。我们不在乎它在记录中出现了多少次。如果我们有“John A. Anderson”或“John G. Anderson”的记录,我们会按照 98% 的匹配度来称呼它,基于这两个术语出现的事实,是接近的,但是是分开的一个字符,因此损失 2%。然后,如果我们有一个“凯文·约翰·安德森”的结果,那么根据现有的额外工作,匹配率会更高,大约为 80-90%
  • 确切的规则可以由我们的开发来定义,但我们仍然需要关于如何实施它们的指导。谢谢。
  • @Stpete111 听起来您的匹配百分比与编辑距离一致...这是一个公平的评估吗?
  • @BruceJohnston 我对此并不积极。在我上面关于凯文·约翰·安德森的例子中,“约翰”和“安德森”的距离与普通约翰·安德森的距离相同,但我们肯定希望凯文·约翰·安德森的记录中的匹配百分比低于记录中的匹配率与约翰安德森。编辑距离是否考虑其他类似的词,还是只考虑查询词之间的距离?

标签: azure-cognitive-search


【解决方案1】:

根据上面 cmets 中的简要描述,让我尝试提出几个选项:

假设您真的专注于人名查找并有一组特定的规则来建模,也许您可​​以使用具有不同提升的不同匹配规则。为此,您需要使用 full Lucene query syntax(在查询字符串中使用 queryType=full)。

对于简单的情况,您可以从区分匹配连续与不匹配的情况开始:如果输入搜索是“John Anderson”,您可以将其重写为:

"John Anderson"^100 OR (John AND Anderson)

这会严重影响结果并按照您描述的顺序返回内容。如果您想限制令牌级编辑距离直到它不匹配,您可以在短语中使用 slot:

"John Anderson"^100 OR "John Anderson"~2

如果您还想处理完全之前或完全之后的额外术语影响匹配的情况,我想知道您是否可以使用前缀/后缀。例如,在索引期间,您在名称之前添加单词“开始”,在之后添加单词“结束”(您可以使用不太可能是名称的更随机的字母序列)。因此,如果字段值为“John Anderson”,则该字段应具有“begin John Anderson end”。然后在搜索时你可以这样做:

"begin John Anderson end"^1000 OR "John Anderson"^100 OR "John Anderson"~2

这将支持从名称的开头到结尾的匹配,然后是名称的中缀匹配(按确切顺序),然​​后是带有原始标记的名称以及中间的其他内容。您可以通过调整提升来重新洗牌。

按照此操作将为您提供您想要的大致顺序,但不是百分比。要计算百分比,您可以从分数的数量级映射它们,和/或通过根据原始搜索词对结果进行后处理。

【讨论】:

  • Pablo 和 Bruce,感谢您的详细回答。我会与我的开发人员一起审查这些建议,并会尽快回复我确定的其他问题。
猜你喜欢
  • 2014-11-27
  • 2012-05-11
  • 2022-01-26
  • 1970-01-01
  • 2017-12-01
  • 2017-11-22
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多