我正在尝试改善从Azure搜索索引返回的结果的排名。搜索索引基本上包含乐队名称和成员的列表。
完全匹配对我们很重要,但部分匹配也很重要,但是查询中的部分单词也是如此。
如果我使用尝试查找名为Black Flag
的乐队的示例。在用户输入区域,我可以输入black fl
。
我目前将查询的结构构造为:"black fl"|black fl*
(整个词组完全匹配,fl上部分匹配)。
这将按以下顺序返回以下结果:
目前,使用Standard - Lucene
分析器搜索单个文本字段。
我看过Scoring Profiles
,但就可用字段而言,这些似乎与如此小的数据集无关。
我还探索了完整的Lucene搜索,在单词black上添加了类似^ 10之类的内容,使其变得更加重要-并以多种方式更改了我的查询字符串,但这些方式似乎都无法产生效果在……之后。
我希望Black Flag
会更好地匹配,因为单词顺序比上面的结果更正确。
有没有一种方法可以改变评分方式来解决此问题?现在,我想象我正在考虑使用自定义分析器(https://docs.microsoft.com/en-gb/azure/search/index-add-custom-analyzers),但不确定如何从此开始或我希望分析器的行为如何。
对于如何最好地处理这种情况的任何想法或示例,将不胜感激。