Search 相关性的内部搜索优化

Search 相关性的内部搜索优化,search,optimization,solr,nlp,search-engine,Search,Optimization,Solr,Nlp,Search Engine,我的团队正在使用Solr,对此我有一个问题 有一些搜索词没有给出相关的结果或应该显示的结果。例如: 搜索没有像“Macys”这样撇号的梅西百货不会返回任何梅西百货的结果 搜索摩根大通和摩根大通会得到不同的结果 搜索IBM不会显示包含其全名(即国际商业机器)的结果 我们如何改进和优化这些案例,使其适用于所有案例,甚至适用于除上述3个之外我们没有发现的案例 有什么建议吗?所有这些问题都与此相关。您必须为字段创建一个过滤器链,并可能针对不同的用例使用多个字段,并使用qf对这些字段进行优先级排序,以处理

我的团队正在使用Solr,对此我有一个问题

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

  • 搜索没有像“Macys”这样撇号的梅西百货不会返回任何梅西百货的结果
  • 搜索摩根大通和摩根大通会得到不同的结果
  • 搜索IBM不会显示包含其全名(即国际商业机器)的结果
  • 我们如何改进和优化这些案例,使其适用于所有案例,甚至适用于除上述3个之外我们没有发现的案例


    有什么建议吗?

    所有这些问题都与此相关。您必须为字段创建一个过滤器链,并可能针对不同的用例使用多个字段,并使用
    qf
    对这些字段进行优先级排序,以处理输入值以实现您的目的

    第一种情况可以通过使用PatternReplaceFilter删除任何撇号来解决-根据您的用例和标记器,您可能希望使用CharFilter版本,因为它在将文本拆分为多个标记之前处理文本

    第二个案例是直接的同义词过滤器或WordDelimiterFilter,您可以将JPMorgan扩展为“JPMorgan”,或者使用WordDelimiterFilter将案例更改扩展为单独的标记。这还允许您搜索
    JP
    并获取
    JPMorgan
    相关条目。这些可能对分数有不同的影响,请使用
    debugQuery=true
    查看查询中的每个术语对分数的贡献

    第三种情况一般与第二种情况相同。您必须为所使用的术语创建一个合适的同义词列表,这通常是您在从用户、现有词典和领域知识获得反馈时构建的。还可以选择使用NLP对文本进行预处理,或者在本例中,将任何大写单词的首字母缩写索引在彼此之后,这样做可能会有所帮助