内部搜索优化相关性

时间:2018-09-19 15:34:53

标签: search optimization solr nlp search-engine

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

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

  1. 搜索没有像“ Macys”这样的撇号的Macy不会给Macy带来任何结果。
  2. 搜索摩根大通与摩根大通会得到不同的结果
  3. 搜索IBM不会显示包含其全名(即国际商务机)的结果。

我们如何改进和优化此类案例,以使其适用于所有案例,甚至适用于除上述3个案例之外的案例?

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

您可以通过使用PatternReplaceFilter除去所有撇号来解决第一种情况-根据您的用例和令牌生成器,您可能希望使用CharFilter版本,因为它会在将文本拆分成多个令牌之前对其进行处理。

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

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