Solr进阶之Solr综合文本相似度的多因素权重排序实现
来源:互联网 发布:数据分析师是青春饭吗 编辑:程序博客网 时间:2024/05/22 05:17
现在有个需求是这样子的:
需要计算搜索词的权重设置其为总排序权重的0.6,其他因素的权重为0.4
其他因素中还有详细的划分.
这里我们用Solr如何来实现?众所周知solr默认的排序方式为按照文本相似度来进行降序排列的,现在我们要将打分的Score作为排序的一个因子来利用.就需要单独的获取到Score.
网上是有一些通过继承类来实现的方式的.这里我不再累述,而说一种通过Solr内置的函数来实现的方式.
solr提供了函数查询的方式,也能用函数的计算结果来作为排序的字段.我们用solr的函数是可以拿到查询的score打分的,下面给出相应的证明:
原始查询打分如图:
下面使用solr获取可以操作的score,如图:
查询部分的排序字段使用函数来实现:
到此基本上综合多因素排序部分基本上可以算完成了,下面就是根据的搜索效果来调整算法和参数了!
下面使用solr获取可以操作的score,如图:
能看出来,我们自己得到的myscore和原始的score的大小是一致的.
下面看一个例子及其相应的打分函数的实现:
①匹配权重系数:0.6,
权重因子系数:
标题 0.6 正文0.4
②其他权重系数:0.4
评论得分:0.3
点赞数得分:0.25
最后评论时间得分:0.2
浏览量得分:0.15
收藏数得分:0.1拿搜索词 话题 来举例子,函数如下:
myscore:sum(product(scale(query({!v='topicName:"话题"^3 OR topicContent:话题^2'}),0,1),0.6),product(sum(product(scale(topicReplyNum,0,1),0.3),product(scale(likeCount,0,1),0.25),product(scale(collectionNum,0,1),0.1),product(scale(countPV,0,1),0.15),product(scale(lastReplyTime,0,1),0.2)),0.4))
我们用函数来排序能看出来综合排序是有效果的,score大的不一定在前面了
由于考虑到性能问题,真正代码实现时可以牺牲一部分的准确性,先离线计算一下其他部分的分值,存储起来,直接综合文本相似度和其他权重即可.能提高一部分的查询效率.但是数据量太大还是会存在问题(需要考虑做rerank来进行一个topN的精确排序)
离线部分索引代码和查询部分的生成排序的函数如下:
查询部分的排序字段使用函数来实现:
到此基本上综合多因素排序部分基本上可以算完成了,下面就是根据的搜索效果来调整算法和参数了!
0 0
- Solr进阶之Solr综合文本相似度的多因素权重排序实现
- [solr]查询权重排序
- solr入门之edismax权重排序使用之Java代码实现自定义权重
- solr入门之edismax权重排序使用之Java代码实现自定义权重
- Solr之相似匹配。
- [solr] - defType - 查询权重排序
- [solr] - defType - 查询权重排序
- [solr] - defType - 查询权重排序
- solr - defType - 查询权重排序
- solr入门之自定义排序之构建自己的权重计算方法及相应的排序字段
- solr的相似匹配
- solr权重
- solr权重
- Solr进阶之拼写纠错功能的实现基础拼音
- solr入门之权重排序方法初探之使用edismax改变权重
- Solr 相似度判断moreLikeThis
- Solr相似度算法:BM25Similarity
- Solr之搜索字段增加权重。
- MVP架构
- 撒旦法撒嘎嘎
- js设置cookie和localStorage
- ionic利用gulp混淆代码与编译热更新
- 判断当前服务是否运行
- Solr进阶之Solr综合文本相似度的多因素权重排序实现
- Error: java.io.IOException: Can't export data, please check failed map task logs
- eMMC分区详解(转自:http://blog.sina.com.cn/s/blog_5c401a150101jcos.html)
- opnet之自行设计csma/ca/rx
- Java WebService 简单实例
- input type = button 中onclick无效
- leetcode_20. Valid Parentheses 括号匹配问题;java String实例的声明和初始化;没用栈;
- 搭建DevStack中遇到的问题及解决办法
- Retrofit谷歌官方详解