【问题标题】:Internal Search optimization for relevance相关性的内部搜索优化
【发布时间】:2018-09-19 15:34:52
【问题描述】:
我的团队正在使用 Solr,我对此有疑问。
有些搜索词没有给出相关结果或应该显示的结果。例如:
- 搜索不带撇号(如“Macys”)的 Macy's 不会返回任何 Macy's 的结果。
- 搜索 JPMorgan 与 JP Morgan 会得到不同的结果
- 搜索 IBM 时未显示包含其全名(即 International business machine)的结果。
我们如何改进和优化此类案例,使其适用于所有人,甚至适用于除了上述 3 个之外我们没有发现的案例?
有什么建议吗?
【问题讨论】:
标签:
search
optimization
solr
nlp
search-engine
【解决方案1】:
所有这些问题都与how you process the incoming text for those fields 有关。您必须为该字段创建一个过滤器链 - 并可能为不同的用例使用多个字段,并优先使用 qf 的字段 - 处理输入值以执行您想要的操作。
您的第一种情况可以通过使用 PatternReplaceFilter 删除任何撇号来解决 - 根据您的用例和标记器,您可能希望使用 CharFilter 版本,因为它在将文本拆分为多个标记之前对其进行处理。
您的第二种情况是直接同义词过滤器或 WordDelimiterFilter,您可以将 JPMorgan 扩展为“JP Morgan”,或使用 WordDelimiterFilter 将大小写更改扩展为单独的标记。这也将允许您搜索 JP 并获取 JPMorgan 相关条目。这些可能对分数有不同的影响,请使用debugQuery=true 准确查看查询中的每个字词对分数的贡献。
第三种情况一般与第二种情况相同。您必须为所使用的术语创建一个体面的同义词列表,这通常是您在从用户、现有词典和领域知识获得反馈时构建的。还可以选择使用 NLP 预处理文本,或者在这种情况下,像索引任何大写单词的首字母这样简单的方法会有所帮助。