solr 全文检索默认排序是按照查询字段的文本相关性来排序的,但是当多字段查询的时候,我们往往会希望某个字段的相关性占得比重比较大。比如搜索一个电影关键词 movie,其中一个电影名称里有个词是 movie,而另一个电影的简介里个词是 movie,那么我们肯定希望名称里有 movie 的排名能更靠前,也就是说名称的权重更大一些,而简介的权重稍小。
solr 支持 dismax 和 edismax 两种方式配置权重,但是在我测试过程中,发现 dismax 更接近我想要的结果,在对应 core 文件夹中的 solrconfig.xml 里添加如下内容:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">dismax</str>
<str name="qf">
title^2 content
</str>
</lst>
</requestHandler>
可以看到,跟默认的 select 形式是很相似的,所以只有一个能生效,网上有说加上 default=true 就可以使配置生效,但是我在测试过程中发现无效,不知道是哪里的问题,只好把默认 select 配置删除掉,只留 dismax 的配置,qf 中的配置意思是 title 字段的权重是 content 字段的 2 倍,查询字段有多个,就可以配置多个字段的权重关系。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于