基于Solr规则的提升

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

  1. 如果我搜索一个单词,如果存在完全匹配,那么它应该首先出现。 例如:如果我搜索laptop ,它应首先返回带有笔记本电脑的确切product_name

  2. 如果我搜索多个单词,它应该遵守规则1.并且最小字长距离名称首先出现。 例如:如果我搜索dell laptop ,它应该首先返回戴尔笔记本电脑 戴尔笔记本电脑

  3. 如果我搜索单词,它不应该返回包含或without包含单词的结果。 例如:在搜索laptop bag ,它不应该给戴尔笔记本电脑带袋戴尔笔记本电脑没有袋子结果。

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

我的应用程序是在java中,所以赞赏Java答案。

首先,您应该使用dismax或edismax查询解析器而不是默认值( lucene )。

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

  1. :使用qf来增强product_name字段。
  2. :使用pf来增强product_name字段,其中q参数中的所有项都非常接近。
  3. :使用bq来增强没有出现或不出现单词的文档。 看到这里 。 例如: bq=(*:* -with -without)^999