- 浏览: 2602138 次
- 来自: 杭州
文章分类
- 全部博客 (1190)
- webwork (4)
- 网摘 (18)
- java (104)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (15)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (8)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
Aqu415:
,默认是netty还是hassion?
dubbo入门 -
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介
使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情。Solr本身的排序打分规则是继承自
Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是对于一些专门领域的搜索来讲,文本相关度的
打分是不合适的。
如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法
- 1、定制Lucene的boost算法,加入自己希望的业务规则;
- 2、使用Solr的edismax实现的方法,通过bf查询配置来影响boost打分。
- 3、在建索引的schema时设置一个字段做排序字段,通过它来影响文档的总体boost打分。
上面每一种方法都有其优劣,下面分析一下各自的优劣。
- 第一种方法技术难度要求较高,需要读懂Lucene的boost打分算法,在代码层做定制.
- 第二种方式就简单不少,不过因为受限于edismax提供的方法,所以有些局限性。
- 第三种排序可完全消除文本相关性打分的影响,文本检索匹配逻辑只负责找到匹配的项,排序由自定义字段处理。
下面结合最近使用Solr的实践,着重介绍一下通过使用Solr的DisMaxQParserPlugin通过配置来制定结果文档打分规则。
DisMaxQParserPlugin提供在针对文本boost打分上,支持搜索多个schema索引字段,并针对每一个字段设置不同的boost权限。
pf查询 与 qf查询
pf:
可提供对一条记录的多个字段做匹配的功能
qf:
针对查询的每个字段设置不同的boost权重打分,其设置的字段必须为在pf中配置的项。
<requestHandler name="/browse" class="solr.SearchHandler"> <lst name="defaults"> <str name="defType">edismax</str> <str name="pf"> name info title </str> <str name="qf"> name^1 info^0.8 title^0.6 </str> </lst> </requestHandler>
上面一段的意思是,查询name,info,title三个字段,每个字段的文本相关度打分权重分别为1,0.8,0.6。计算查询出的每一条结果的权重方法如下:分别计算各字段的文本打分然后乘于配置的权重,最后三者相加即为该结果的boost得分。
bf查询
除去pf查询,qf查询之外,仍然希望索引记录的其它字段能够计入打分中,这时可以使用bf查询。bf查询支持一些数据函数,这些函数可作用在索引记录的字段上,多为时间,数值等字段。同样bf也支持添加权重。下面是一个使用bf查询配置的例子:
<requestHandler name="/browse" class="solr.SearchHandler"> <lst name="defaults"> <str name="defType">edismax</str> <str name="bf"> sum(recip(ms(NOW,created_time),3.16e-11,1,1),sqrt(log(max(sales,1))),sqrt(log(count)))^10 </str> <str name="pf"> name info title </str> <str name="qf"> name^1 info^0.8 title^0.6 </str> </lst> </requestHandler>
其中sum,recip,ms,sqrt,
log,max这些都是Solr提供的数学方法,支持的所有数学方法可在这里查找到:http://wiki.apache.org/solr/FunctionQuery
edismax相关资源:http://wiki.apache.org/solr/DisMaxQParserPlugin
发表评论
-
三种solr提交(commit)索引的方式
2014-03-01 13:40 20887三种solr提交索引的 ... -
solr build索引性能
2014-03-01 13:26 1521测试代码 package mytest; impo ... -
Solr性能优化之filterCache
2014-02-27 10:48 915原文:Solr性能优化之filterCache 什么是f ... -
SolrCore查询过程源码分析
2014-02-12 15:37 1224一.环境启动代码 SolrResourceLoader. ... -
通过设置SolrInputDocument 的boost来改变文档评分
2014-01-31 23:18 1509solr通过关键字查询后的文档得分最后要乘以这个boost因 ... -
Solr 使用 Log4j
2014-01-25 21:31 2374原文出处:http://blog.chenlb.com/20 ... -
solr基本概念
2014-01-25 20:49 1371原文:http://www.solrtutorial.com ... -
solr load比较高
2013-12-02 09:50 1032最近solr的load比较高,通过jstack查看: 写 ... -
Solr索引放入内存
2013-08-28 11:45 10002在一次技术群中,中听到一位sina的架构师,他们是采用基于l ... -
solr build索引遇到控制字符的错误
2013-08-23 15:12 606今天build solr 索引遇到如下错误: 发现提 ... -
solr 更新index的最佳实践
2013-08-22 15:24 990其中重要一点是,solr不运行并发commit。 懒得翻 ... -
Scaling Solr(Solr的扩展)
2013-08-21 20:55 675Solr 的扩展 (Scaling) 当你的索 ... -
Lucene Scoring 评分机制
2013-08-21 20:52 699Lucene 评分体系/机制 ... -
solr build index例子
2013-08-20 14:24 843p = PeopleDO({'userid':101,'s ... -
solr build索引时commit与optimize的概念
2013-08-20 14:22 1900大家都知道,solr在提交索引的时候有commit和opt ... -
solr in action
2013-08-20 13:56 1214solr in action电子书 -
solr的函数查询_FunctionQuery_总结
2012-12-21 15:55 4134作用 函数查询的作用,是影响计算score的算法,并不替 ... -
solr java客户端build索引
2012-12-17 17:08 1046package com.duitang.views.tes ... -
Solrj
2012-11-20 14:17 926solr 的java客户端可比python复杂一些,贴点代码: ... -
solr cache使用和介绍
2012-07-23 18:49 0原文:http://wiki.apache.org ...
相关推荐
通过solr实现电商搜索排名打分,排序,可自定义打分规则
solr搜索引擎,solr介绍什么是solr搜索引擎,操作实例
ES和solr都是基于Lucence的搜索框架,文档比较2中方案适合的不同场景和优劣
Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。
基于solr-geo空间搜索 1、Solr的schema.xml配置 定义坐标field 2、Solr的data-config.xml配置 建立索引 3、java查询语法 坐标距离、分页、排序
更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、...
solr搜索服务器安装配置--资料备份
1.学员操作手册-Solr搜索自动补全 2.solr实训教程.doc 3.积分商城基于Solr的搜索引擎优化.pdf 4.基于Solr的搜索引擎优化讲义.pdf 5.课程大纲-基于搜索引擎培训.doc 6.学员操作手册-Solr数据库插入索引.doc 7.学员...
solr搜索引擎支持分页 有问题可以QQ(271287607)
sorl搜索引擎安装与文件,Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
类似京东,淘宝搜索自动补全功能。通过suggest.js插件来完成功能开发。
Solr reRank简介,用于描述solr二次排序的规则,Solr reRank简介,用于描述solr二次排序的规则
apache solr搜索系统的.Net实现
solr文档解说
使用solr搜索引擎 利用Spring springmvc 框架 在页面实现一些组合查询
NULL 博文链接:https://ldcsunnyboy.iteye.com/blog/1113251
solr搜索引擎最新安装包。solr是比较常用的企业级搜索引擎。
介绍了Solr5.5内部使用的分词原理,有助于开发者自定义自己的分词器时掌握分词的基础知识。
solr配置搜索引擎平台 一、 SOLR搭建企业搜索平台 二.... 三,,,,
Solr是一个拥有象WebService一样接口的独立运行的搜索服务器。它是基于lucene搜索引擎的服务,你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且...