- 浏览: 2652099 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- 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 (7)
- 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)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
使用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 20942三种solr提交索引的 ... -
solr build索引性能
2014-03-01 13:26 1542测试代码 package mytest; impo ... -
Solr性能优化之filterCache
2014-02-27 10:48 950原文:Solr性能优化之filterCache 什么是f ... -
SolrCore查询过程源码分析
2014-02-12 15:37 1248一.环境启动代码 SolrResourceLoader. ... -
通过设置SolrInputDocument 的boost来改变文档评分
2014-01-31 23:18 1549solr通过关键字查询后的文档得分最后要乘以这个boost因 ... -
Solr 使用 Log4j
2014-01-25 21:31 2400原文出处:http://blog.chenlb.com/20 ... -
solr基本概念
2014-01-25 20:49 1406原文:http://www.solrtutorial.com ... -
solr load比较高
2013-12-02 09:50 1068最近solr的load比较高,通过jstack查看: 写 ... -
Solr索引放入内存
2013-08-28 11:45 10025在一次技术群中,中听到一位sina的架构师,他们是采用基于l ... -
solr build索引遇到控制字符的错误
2013-08-23 15:12 627今天build solr 索引遇到如下错误: 发现提 ... -
solr 更新index的最佳实践
2013-08-22 15:24 1016其中重要一点是,solr不运行并发commit。 懒得翻 ... -
Scaling Solr(Solr的扩展)
2013-08-21 20:55 709Solr 的扩展 (Scaling) 当你的索 ... -
Lucene Scoring 评分机制
2013-08-21 20:52 722Lucene 评分体系/机制 ... -
solr build index例子
2013-08-20 14:24 869p = PeopleDO({'userid':101,'s ... -
solr build索引时commit与optimize的概念
2013-08-20 14:22 1944大家都知道,solr在提交索引的时候有commit和opt ... -
solr in action
2013-08-20 13:56 1238solr in action电子书 -
solr的函数查询_FunctionQuery_总结
2012-12-21 15:55 4198作用 函数查询的作用,是影响计算score的算法,并不替 ... -
solr java客户端build索引
2012-12-17 17:08 1091package com.duitang.views.tes ... -
Solrj
2012-11-20 14:17 995solr 的java客户端可比python复杂一些,贴点代码: ... -
solr cache使用和介绍
2012-07-23 18:49 0原文:http://wiki.apache.org ...
相关推荐
5. 自定义排序和评分:用户可以根据需求定制排序规则和评分机制,提升搜索结果的相关性。 6. 多语言支持:Solr内置了多种语言的分词器,能够处理多种语言的搜索请求。 二、Solr的基本架构 Solr架构主要由以下组件...
Solr允许自定义排序规则,如基于销量、价格、用户评价等多维度的排序策略。 4. **高亮显示**:Solr可以自动识别查询关键词在结果中的位置,并进行高亮,帮助用户快速定位关键词。 5. **分面搜索**:在京东的搜索...
5. 自定义排序和评分:用户可以自定义文档排序规则和评分算法,以满足特定的业务需求。 6. 多语言支持:Solr内置了多种语言分析器,支持不同语言的全文搜索。 7. 高亮显示:Solr可以高亮显示搜索结果中的关键词,...
Solr 的 DisMaxQParserPlugin 通过配置来制定结果文档打分规则,提供在针对文本 boost 打分上,支持搜索多个 schema 索引字段,并针对每一个字段设置不同的 boost 权限。 在 Solr 中,文档得分是一个用来描述查询...
6. **配置灵活性**:Solr的配置文件允许用户根据需求定制索引和查询行为,例如设置评分算法、过滤器和排序规则。 7. **结果集排序和剪枝**:Solr允许用户根据相关度或其他自定义因素对搜索结果进行排序,并且可以...
5. **排序与评分**:定义搜索结果的排序规则,比如可以根据景点的评分、访问量等进行排序。Solr的`df`参数用于指定默认搜索字段,`qf`参数定义哪些字段参与评分。 6. ** faceting(聚类)**:Solr的分面搜索功能...
Solr能够对大量数据进行快速的全文检索,同时支持多字段排序、分面搜索和自定义评分策略。为了保持索引与源数据的一致性,Solr引入了DIH,这是一个内建的机制,用于从关系数据库、XML文件等外部数据源导入数据,并将...
6. **搜索结果排序与评分**: - 可以自定义排序规则,基于相关性、时间戳或其他属性。 - `tf-idf`是默认的评分算法,可通过修改查询参数调整。 7. ** faceting(分面搜索)**: - 提供强大的分面导航功能,帮助...
Solr的核心是Lucene库,这是一个强大的全文搜索引擎库,但Solr在Lucene的基础上提供了更多高级特性,如分布式搜索、集群支持、多核心管理、自定义排序和高亮显示等。 源代码分析: 1. **索引构建与查询处理**: ...
- **结果评分**:Solr提供TF-IDF算法计算文档的相关性,并返回最相关的搜索结果。 在“apache-solr-1.4.1”目录下,通常会包含以下文件和目录: - **bin**:存放启动和管理Solr的脚本,如`solr`命令行工具。 - *...
同时,可以自定义排序规则,如基于字段值、评分或自定义脚本。 6. **分布式搜索**:Solr 3.5.0支持分布式搜索,通过分片和复制技术,可以在多台机器上分布索引,提高查询性能和可用性。 7. **高亮显示**:Solr能够...
Schema是Solr的核心概念之一,它定义了文档的字段类型、分词器、排序规则等,确保数据的一致性和准确性。 1.2.3 查询 Solr支持复杂的查询语法,包括布尔逻辑、短语匹配、近似搜索、高亮显示等,同时提供查询建议和...
3. 结果排名:根据相关性评分算法,对搜索结果进行排序。 4. 高级特性:支持 faceting(分面搜索)、highlighting(高亮显示)、spell checking(拼写检查)等。 四、SolrCloud 集群管理 1. ZooKeeper 集群协调:...
3. **查询优化**:Solr会根据查询条件和索引结构自动优化查询计划,包括使用倒排索引来快速定位匹配文档,以及对查询结果进行评分排序。 4. **高亮显示**:Solr能够对查询结果中的匹配词进行高亮,提高用户查找相关...
Solr的核心功能包括全文索引、近实时搜索、多字段排序、高亮显示搜索结果、分布式搜索以及多种数据处理功能。它允许用户通过HTTP接口(通常是RESTful API)与Solr服务器进行交互,这使得集成到各种应用程序中变得...
3. **查询与排序**: Solr提供了丰富的查询语法,包括布尔查询、短语查询、范围查询等,同时支持自定义排序规则,可以根据多个字段或复杂的评分函数进行排序。 4. **字段类型与分析**: Solr允许用户定义不同的字段...
4. 排序与评分:Solr允许自定义排序规则,根据不同的字段或评分算法对结果进行排序。 5. 自定义分析器:Solr支持自定义分析流程,如分词、去除停用词、词形还原等,以适应特定的语言和数据。 总结,Solr是一个强大...
- **核心技术**:比如如何利用术语频率分布来改进搜索结果的排序、如何处理同义词等问题。 - **应用场景**:探讨了这种搜索策略在新闻聚合、学术研究等领域的应用案例。 7. **塑造相关性** - **定制化相关性**...
10. **查询重排序**:介绍了如何使用机器学习等技术对查询结果进行重新排序,以提高搜索质量。 11. **转换结果文档**:提供了如何将查询结果转换为其他格式的方法。 12. **建议器**:解释了 Solr 的建议器功能,...
Solr 提供了强大的全文检索、命中高亮、拼写检查、相关性排序等功能,广泛应用于网站、电子商务、企业内部文档搜索等多个场景。 "j-solr1.zip"这个压缩包文件,很可能是Solr的一个特定版本或者样例集合,用于帮助...