基于Solr规则的提升
我正在使用Solr-5.0.0 。 我正在搜索字段product_name
。 我需要添加一些规则来获得相关结果。
-
如果我搜索一个单词,如果存在完全匹配,那么它应该首先出现。 例如:如果我搜索
laptop
,它应首先返回带有笔记本电脑的确切product_name
。 -
如果我搜索多个单词,它应该遵守规则1.并且最小字长距离名称首先出现。 例如:如果我搜索
dell laptop
,它应该首先返回戴尔笔记本电脑 戴尔笔记本电脑 。 -
如果我搜索单词,它不应该返回包含或
without
包含单词的结果。 例如:在搜索laptop bag
,它不应该给戴尔笔记本电脑带袋或戴尔笔记本电脑没有袋子结果。
如何在查询时实现这些基于搜索相关结果的规则?
我的应用程序是在java中,所以赞赏Java答案。
首先,您应该使用dismax或edismax查询解析器而不是默认值( lucene )。
然后,您可以使用不同的参数提高相关性:
- :使用qf来增强product_name字段。
- :使用pf来增强product_name字段,其中q参数中的所有项都非常接近。
- :使用bq来增强没有出现或不出现单词的文档。 看到这里 。 例如:
bq=(*:* -with -without)^999