solr如何设置搜索结果排名靠前
(1)问题分析
面试官考察你对搜索结果排序的知识点。
(2)核心问题详解
Solr有个boots值,boots值越高,计算出来的相关度得分就越高,排名也就越靠前
方式一、使用SolrJ添加文档时
HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8888/solr/collection1
");
SolrInputDocument solrDocument = new SolrInputDocument();
solrDocument.setField("item_title","商品标题",10);//这里的10就是boots值
solrDocument.setField("item_image","http://192.168.25.133/group1/00/m0/lugvwye6179931.jpg
");
solrDocument.setField("item_seller","华为旗舰店");
solrServer.add(solrDocument);
方式二、单纯的按照排序
利用solr自己的排序方法,可以在查询时指定按照哪一字段进行排序,比如按照时间的倒叙等,配置多个字段权重可以通过Solr的edismax实现的方法,配置不同字段的权重最终影响boost的打分。这种方法比较简单,需要配置一下即可用,但有自身的局限性,对于特殊需求达不到满足,比如付费的信息最前显示。
方式三、edismax函数
在edismax方法的基础上进行修改,edismax支持boost函数与score相乘作为打分结果,可以在建立索引时单独建立一个字段作为排序的依据字段,并且配合其他字段设置权重来共同影响最终的打分结果
(3)问题拓展
Solr可以结合IK分词器来使用,IK分词器可以自定义停用词和扩展词典。
使用SpringDataSolr查询
(4)项目中的使用
我们在品优购里面搜索模块使用的就是solr,如果需要推荐商品我们可以使用设置boots值的方式使排名靠前。