相关性的内部搜索优化

Internal Search optimization for relevance

我的团队正在使用 Solr,我对此有疑问。

有些搜索词没有给出相关结果或应该显示的结果。例如:

  1. 像 "Macys" 这样不带撇号搜索 Macy's 不会返回 Macy's 的任何结果。
  2. 搜索摩根大通与摩根大通给出不同的结果
  3. 搜索 IBM 未显示包含其全名的结果,即 International business machine。

我们如何改进和优化此类案例,以便它适用于所有情况,甚至适用于除上述 3 种情况外我们没有发现的情况?

有什么建议吗?

所有这些问题都与 how you process the incoming text for those fields 有关。您必须为该字段创建一个过滤器链 - 并且可能针对不同的用例使用多个字段,并使用 qf 对这些字段进行优先级排序 - 处理输入值以执行您想要的操作。

您的第一个案例可以通过使用 PatternReplaceFilter 删除任何撇号来解决 - 根据您的用例和分词器,您可能想要使用 CharFilter 版本,因为它会在将文本拆分为多个分词之前处理文本。

您的第二种情况是直接的同义词过滤器或 WordDelimiterFilter,您将 JPMorgan 扩展到 "JP Morgan",或使用 WordDelimiterFilter 将大小写更改扩展为单独的标记。这也将允许您搜索 JP 并获得 JPMorgan 相关条目。这些可能会对分数产生不同的影响,请使用 debugQuery=true 查看查询中的每个术语对分数的贡献。

第三种情况与第二种情况大体相同。您必须为所使用的术语创建一个体面的同义词列表,这通常是您在从用户、现有词典和领域知识中获得反馈时构建的。还有使用 NLP 预处理文本的选项,或者在这种情况下,像索引任何大写单词的首字母一样原始的东西可能会有所帮助。