我正在使用 Solr-5.0.0 。我正在搜索字段product_name
我需要添加一些规则以获得相关结果。

  • 如果我搜索单词,如果存在完全匹配的单词,则应排在最前面。
    例如:如果我搜索laptop,它应该首先使用笔记本电脑返回确切的product_name
  • 如果我搜索多个单词,则应遵循规则1.单词长度最小的名称排在第一位。
    例如:如果我搜索dell laptop,它将首先返回Dell笔记本电脑,而不是Dell inspiron笔记本电脑。
  • 如果我搜索单词,则不应返回包含withwithout单词的结果。
    例如:在laptop bag搜索中,不应先给带包的Dell笔记本电脑或没有带包结果的Dell笔记本电脑。

  • 如何在查询时实现这些基于规则的搜索相关结果?

    我的应用程序是用Java编写的,因此赞赏Java的回答。

    最佳答案

    首先,您应该使用dismaxedismax查询解析器,而不是默认的解析器(lucene)。

    然后,您可以使用不同的参数来提高相关性:

  • :使用qf扩展您的product_name字段。
  • :使用pf增强您的product_name字段,其中q参数中的所有术语都非常接近。
  • :使用bq增强不出现withwithout单词的文档。 See here。例如:bq=(*:* -with -without)^999
  • 10-06 02:40