solr 使用edismax来控制评分】的更多相关文章

如何控制评分 如果设置了sort字段,那么将会按照sort字段的顺序返回结果. 如果没有设置sort字段,那么将会根据相关度打分来排序.也就是说,相关度更高的排在前面. 如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法:1.定制Lucene的boost算法,加入自己希望的业务规则:2.使用Solr的edismax实现的方法,通过bf查询配置来影响boost打分.3.在建索引的schema时设置一个字段做排序字段,通过它来影响文档的总体boost打…
edismax支持boost函数与score相乘作为,而dismax只能使用bf作用效果是相加,所以在处理多个维度排序时,score其实也应该是其中一个维度 ,用相加的方式处理调整麻烦. 而dismax的实现代码逻辑比较简单,看起来比较易理解,edismax是它的加强版,其实是改变了不少..比如在以下: 先看看dismax的解析主要实现思路: 首先取出搜索字段名qf 将最终解析成一个BooleanQuery 先解析主mainQuery: 用户主要是搜索串的解析 altQuery解析处理,看是否使…
做搜索引擎避免不了排序问题,当排序没有要求时,solr有自己的排序打分机制及sorce字段 1.无特殊排序要求时,根据查询相关度来进行排序(solr自身规则) 2.当涉及到一个字段来进行相关度排序时,可以直接使用solr的sort功能来实现 3.对多个字段进行维度的综合打分排序(这个应该才是重点,内容) 使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情.Solr本身的排序打分规则是继承自 Lucene的文本相关度的打分即boost,这一套算法对于…
背景 通过脚本改变评分 背景 近期有一个需求,需要对优惠券可用商品列表加个排序,只针对面值类的券不包括折扣券. 需求是这样的,假设有一张面值券 50 块钱,可用商品列表 A 100.B 40.C 10,当用户查询当前券可用商品列表的时候优先将卡券可以直接抵扣且不需要用户在额外支付的商品排在前面. C 10 B 40 A 100 其实排序有很多侧重,比如: 1.根据用户利益最大化原则,排序列表应该是 B.C.A 2.根据用户购买习惯,有可能是 A.B.C 3.根据运营策略.第三方利益等有可能是C.…
使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情.Solr本身的排序打分规则是继承自Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是对于一些专门领域的搜索来讲,文本相关度的打分是不合适的. 如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法 1.定制Lucene的boost算法,加入自己希望的业务规则: 2.使用Solr的edismax实现的方…
在搭建好solrCloud搜索集群后,通过编写基本的查询显示语句已经能够通过输入关键字查询到相应结果进行显示,但是在显示结果排序上以及不相关信息过滤问题上,如何制定合理的打分规则得到理想的结果集确实比较麻烦的.Solr本身的排序打分规则是继承自Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是想要根据实际业务需求定制自己的打分机制来获取理想的查询结果,文本相关度的打分是远远不够的. 如何来定制实际业务需求的的排序打分规则(boost)呢?经过…
垂直搜索结果的优化包括对搜索结果的控制和排序优化两方面,其中排序又是重中之重.本文将全面深入探讨垂直搜索的排序模型的演化过程,最后推导出BM25模型的排序.然后将演示如何修改lucene的排序源代码,下一篇将深入解读目前比较火热的机器学习排序在垂直搜索中的应用.本文的结构如下: 一.VSM模型简单介绍: 二.lucene默认的评分公式介绍: 三.概率语言模型中的二元独立模型BIM介绍: 四.BM25介绍: 五.lucene中的edismax解析器介绍以及评分公式源代码介绍: 六.修改排序源代码:…
文件颜色说明: 红色:程序核心文件,修改这类文件时千万要注意安全! 橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件 绿色:函数类文件,许多功能强大的自定义函数可以调用这类文件来使用 蓝色:最标准的插件制作常用文件紫色:该文件被Zend加密,请不要修改这类文件 每个目录里面都有一个空的index.htm,这是为了防止列目录用的,不必理会. 根目录 ./ (这里都是最基本的程序) admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处…
插件制作的基本思路是:(初学者适用)1.形成插件思路2.制作插件界面3.构架程序模块4.搭建存储数据5.填充功能语句6.检查应用错误7.完善插件功能 前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家.本贴内容由本人定期更新.本贴只介绍Discuz!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!.“Discuz!”在下文中简称“DZ”.要弄DZ二次开发,必须至少具备如下技能:1) 能够理很好…
在某处收集来的discuz目录资料,二次开发挺有用的.记录下.(基于7.0的标准程序,部分与插件无关的文件不作说明) 文件颜色说明: 红色:程序核心文件,修改这类文件时千万要注意安全! 橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件 绿色:函数类文件,许多功能强大的自定义函数可以调用这类文件来使用 蓝色:最标准的插件制作常用文件紫色:该文件被Zend加密,请不要修改这类文件 每个目录里面都有一个空的index.htm,这是为了防止列目录用的,不必理会. 根目录.…