4/11/2011
版权所有,侵权必究
All rights reserved
第
1
页
,
共
58
页
Page 1 , Total58
开源企业搜索引擎SOLR的
应用教程
2010-10
4/11/2011
版权所有,侵权必究
All rights reserved
第
2
页
,
共
58
页
Page 2 , Total58
目 录
1 概述 .......................................................................................................................................... 4
1.1 企业搜索引擎方案选型 ....................................................................................................... 4
1.2 Solr的特性 .......................................................................................................................... 4
1.2.1 Solr使用Lucene并且进行了扩展 ................................................................................... 4
1.2.2 Schema(模式) .......................................................................................................... 5
1.2.3 查询 ............................................................................................................................... 5
1.2.4 核心 ............................................................................................................................... 5
1.2.5 缓存 ............................................................................................................................... 5
1.2.6 复制 ............................................................................................................................... 6
1.2.7 管理接口 ....................................................................................................................... 6
1.3
Solr服务原理 ...................................................................................................................... 6
1.3.1 索引 ............................................................................................................................... 6
1.3.2 搜索 ............................................................................................................................... 7
1.4 源码结构 ............................................................................................................................. 8
1.4.1 目录结构说明 ................................................................................................................ 8
1.4.2 Solr home说明 .............................................................................................................. 9
1.4.3 solr的各包的说明 ........................................................................................................ 10
1.5 版本说明 ........................................................................................................................... 12
1.5.1 1.3版本 ........................................................................................................................ 12
1.5.2 1.4版本 ........................................................................................................................ 12
1.6 分布式和复制 Solr 架构 ................................................................................................... 13
2 Solr的安装与配置 ................................................................................................................... 13
2.1 在Tomcat下Solr安装 ......................................................................................................... 13
2.1.1 安装准备 ..................................................................................................................... 14
2.1.2 安装过程 ..................................................................................................................... 14
2.1.3 验证安装 ..................................................................................................................... 15
2.2 中文分词配置 .................................................................................................................... 15
2.2.1 mmseg4j ..................................................................................................................... 15
2.2.2 paoding ....................................................................................................................... 19
2.3
多核(MultiCore)配置 .................................................................................................... 22
2.3.1 MultiCore的配置方法 .................................................................................................. 22
2.3.2 为何使用多core ? ..................................................................................................... 23
2.4 配置文件说明 .................................................................................................................... 23
2.4.1 schema.xml ................................................................................................................ 24
2.4.2 solrconfig.xml .............................................................................................................. 25
3 Solr的应用 .............................................................................................................................. 29
3.1 SOLR应用概述 ................................................................................................................. 29
3.1.1 Solr的应用模式 ........................................................................................................... 29
3.1.2 SOLR的使用过程说明 ................................................................................................ 30
3.2 一个简单的例子 ................................................................................................................ 30
3.2.1 Solr Schema 设计 ...................................................................................................... 30
3.2.2 构建索引 ..................................................................................................................... 30
3.2.3 搜索测试 ..................................................................................................................... 31
3.3 搜索引擎的规划设计 ......................................................................................................... 32
3.3.1 定义业务模型 .............................................................................................................. 32
3.3.2 定制索引服务 .............................................................................................................. 34
3.3.3 定制搜索服务 .............................................................................................................. 34
3.4 搜索引擎配置 .................................................................................................................... 34
3.4.1 Solr Schema 设计(如何定制索引的结构?) ................................................................. 34
4/11/2011
版权所有,侵权必究
All rights reserved
第
3
页
,
共
58
页
Page 3 , Total58
3.5 如何进行索引操作? ......................................................................................................... 36
3.5.1 基本索引操作 .............................................................................................................. 36
3.5.2 批量索引操作 .............................................................................................................. 37
3.6 如何进行搜索 .................................................................................................................... 39
3.6.1 搜索语法 ..................................................................................................................... 39
3.6.2 排序 ............................................................................................................................. 42
3.6.3 字段增加权重 .............................................................................................................. 42
3.6.4 Solr分词器、过滤器、分析器 ..................................................................................... 42
3.6.5 Solr高亮使用 ............................................................................................................... 46
4 SolrJ的用法 ............................................................................................................................ 46
4.1 搜索接口的调用实例 ......................................................................................................... 46
4.2 Solrj的使用说明 ................................................................................................................ 47
4.2.1 Adding Data to Solr .................................................................................................... 47
4.2.2 Directly adding POJOs to Solr .................................................................................... 49
4.2.3 Reading Data from Solr .............................................................................................. 51
4.3 创建查询 ........................................................................................................................... 52
4.4
使用 SolrJ 创建索引 ....................................................................................................... 52
4.5 Solrj包的结构说明 ............................................................................................................. 53
4.5.1 CommonsHttpSolrServer ........................................................................................... 53
4.5.2 Setting XMLResponseParser ..................................................................................... 53
4.5.3 Changing other Connection Settings ......................................................................... 53
4.5.4 EmbeddedSolrServer ................................................................................................. 54
5 Solr的实际应用测试报告 ........................................................................................................ 54
5.1 线下压力测试报告 ............................................................................................................. 54
5.2 线上环境运行报告 ............................................................................................................. 55
6 solr性能调优 ........................................................................................................................... 55
6.1 Schema Design Considerations ....................................................................................... 55
6.1.1 indexed fields .............................................................................................................. 55
6.1.2 stored fields ................................................................................................................ 55
6.2 Configuration Considerations ........................................................................................... 55
6.2.1 mergeFactor ............................................................................................................... 55
6.2.2 mergeFactor Tradeoffs ............................................................................................... 56
6.3 Cache autoWarm Count Considerations ......................................................................... 56
6.4 Cache hit rate(缓存命中率) .......................................................................................... 56
6.5 Explicit Warming of Sort Fields ........................................................................................ 56
6.6 Optimization Considerations ............................................................................................ 56
6.7 Updates and Commit Frequency Tradeoffs ..................................................................... 56
6.8 Query Response Compression ........................................................................................ 57
6.9 Embedded vs HTTP Post ................................................................................................. 57
6.10 RAM Usage Considerations(内存方面的考虑) ............................................................ 57
6.10.1 OutOfMemoryErrors .......................................................................................... 57
6.10.2 Memory allocated to the Java VM .................................................................... 57
7 FAQ ........................................................................................................................................ 58
7.1 出现乱码或者查不到结果的排查方法: ............................................................................ 58
4/11/2011
版权所有,侵权必究
All rights reserved
第
4
页
,
共
58
页
Page 4 , Total58
1 概述
1.1 企业搜索引擎方案选型
由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的
功能需求,目前在实现搜索引擎的方案上有集中方案可供选择:
1) 基于 Lucene 自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。
2) 调用 Google、Baidu 的 API 实现站内搜索。同第三方搜索引擎绑定太死,无法满足后
期业务扩展需要,暂时不采用。
3) 基于 Compass+Lucene 实现站内搜索。适合于对数据库驱动的应用数据进行索引,尤
其是替代传统的 like ‘%expression%’来实现对 varchar 或 clob 等字段的索引,对于实
现站内搜索是一种值得采纳的方案。但在分布式处理、接口封装上尚需要自己进行一定程
度的封装。
4) 基于 Solr 实现站内搜索。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社
区中采用此方案。
基于以述的几种方案的综合分析,对于我们公司的搜索引擎方案,采用 solr 来实现比较合适。
1.2 Solr的特性
Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和
Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送
一个描述所有 Field 及其内容的 XML 文档就可以了。定制搜索的时候只需要发送 HTTP GET 请
求即可,然后对 Solr 返回的信息进行重新布局,以产生利于用户理解的页面内容布局。Solr 1.3
版本开始支持从数据库(通过 JDBC)、RSS 提要、Web 页面和文件中导入数据,但是不直接支
持从二进制文件格式中提取内容,比如 MS Office、Adobe PDF 或其他专有格式。
更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,
某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,
很多 Lucene 工具(如 Nutch、 Luke)也可以使用 Solr 创建的索引
Solr 的特性包括:
高级的全文搜索功能
专为高通量的网络流量进行的优化
基于开放接口(XML 和 HTTP)的标准
综合的 HTML 管理界面
可伸缩性-能够有效地复制到另外一个 Solr 搜索服务器
使用 XML 配置达到灵活性和适配性
可扩展的插件体系
1.2.1 Solr使用Lucene并且进行了扩展
一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)
对 Lucene 查询语言的强大扩展!
支持对结果进行动态的分组和过滤
高级的,可配置的文本分析
4/11/2011
版权所有,侵权必究
All rights reserved
第
5
页
,
共
58
页
Page 5 , Total58
高度可配置和可扩展的缓存机制
性能优化
支持通过 XML 进行外部配置
拥有一个管理界面
可监控的日志
支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)
1.2.2 Schema(模式)
定义域类型和文档的域
能够驱动智能处理
声明式的 Lucene 分析器规范
动态域能够随时增加域
拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域
显式类型能够减少对域类型的猜测
能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置
1.2.3 查询
拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的 HTTP 接口
高亮的上下文搜索结果
基于域值和显式查询的片段式搜索(Faceted Search)
对查询语言增加了排序规范
常量的打分范围(Constant scoring range)和前缀式查询-没有 idf,coord,或者 lengthNorm
因子,对查询匹配的词没有数量限制
函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响
性能优化
1.2.4 核心
可插拔的查询句柄(Query Handler)和可扩展的 XML 数据格式
使用唯一键的域能够增强文档唯一性
能够高效地进行批量更新和删除
用户可配置的文档索引变化触发器(命令)
并发控制的搜索器
能够正确处理数字类型,从而能够进行排序和范围搜索
能够控制缺失排序域的文档
支持搜索结果的动态分组
1.2.5 缓存
可配置的查询结果,过滤器,和文档缓存实例
可插拔的缓存实现
评论0