logo资料库

开源企业搜索引擎Solr的应用教程.doc

第1页 / 共58页
第2页 / 共58页
第3页 / 共58页
第4页 / 共58页
第5页 / 共58页
第6页 / 共58页
第7页 / 共58页
第8页 / 共58页
资料共58页,剩余部分请下载后查看
1概述
1.1企业搜索引擎方案选型
1.2Solr的特性
1.2.1Solr使用Lucene并且进行了扩展
1.2.2Schema(模式)
1.2.3查询
1.2.4核心
1.2.5缓存
1.2.6复制
1.2.7管理接口
1.3Solr服务原理 
1.3.1索引 
1.3.2搜索
1.4源码结构
1.4.1目录结构说明
1.4.2Solr home说明
1.4.3solr的各包的说明
1.5版本说明 
1.5.11.3版本
1.5.21.4版本
1.6分布式和复制 Solr 架构
2Solr的安装与配置
2.1在Tomcat下Solr安装
2.1.1安装准备
2.1.2安装过程
2.1.3验证安装
2.2中文分词配置
2.2.1mmseg4j
2.2.2paoding
2.3多核(MultiCore)配置
2.3.1MultiCore的配置方法
2.3.2为何使用多core ?
2.4配置文件说明
2.4.1schema.xml
1.FieldType(类型)
2.Fields(字段)
3.copyField(复制字段)
4.dynamicField(动态字段)
2.4.2 solrconfig.xml 
3Solr的应用
3.1SOLR应用概述
3.1.1Solr的应用模式
3.1.2SOLR的使用过程说明
3.2一个简单的例子
3.2.1Solr Schema 设计
3.2.2构建索引
3.2.3搜索测试
3.3搜索引擎的规划设计
3.3.1定义业务模型
3.3.2定制索引服务
3.3.3定制搜索服务
3.4搜索引擎配置
3.4.1Solr Schema 设计(如何定制索引的结构?)
1.定义好需要的类型(Fieldtype)
2.定义好需要的字段(Fielde)
3.5如何进行索引操作?
3.5.1基本索引操作
1.新增、更新索引
2.删除索引
1)删除制定ID的索引
2)删除查询到的索引数据
3)删除所有索引数据
3.5.2批量索引操作
1.通过CVS文件的方式提交
2.数据库数据导入生成索引(
1)全量更新索引
2)增量更新索引
3.6如何进行搜索
3.6.1搜索语法
1.solr 查询参数说明
1)常用
2)不常用
3)其它
2.Solr的检索运算符
3.solr查询的一些常用语法
3.6.2排序
3.6.3字段增加权重
3.6.4Solr分词器、过滤器、分析器
3.6.5Solr高亮使用
4SolrJ的用法
4.1搜索接口的调用实例
4.2Solrj的使用说明
4.2.1Adding Data to Solr
4.2.2Directly adding POJOs to Solr
4.2.3Reading Data from Solr
4.3创建查询
4.4使用 SolrJ 创建索引
4.5Solrj包的结构说明
4.5.1CommonsHttpSolrServer
4.5.2Setting XMLResponseParser
4.5.3Changing other Connection Settings
4.5.4EmbeddedSolrServer
5Solr的实际应用测试报告
5.1线下压力测试报告
5.2线上环境运行报告
6
6.1Schema Design Considerations
6.1.1   indexed fields
6.1.2   stored fields
6.2 Configuration Considerations
6.2.1mergeFactor
6.2.2mergeFactor Tradeoffs
6.3Cache autoWarm Count Considerations
6.4Cache hit rate(缓存命中率)
6.5Explicit Warming of Sort Fields 
6.6 Optimization Considerations
6.7Updates and Commit Frequency Tradeoffs
6.8Query Response Compression
6.9Embedded vs HTTP Post
6.10 RAM Usage Considerations(内存方面的考虑)
6.10.1OutOfMemoryErrors
6.10.2Memory allocated to the Java VM
1.   Factors affecting memory usage(影响内存使用量的因素)
7FAQ 
7.1出现乱码或者查不到结果的排查方法:
开源企业搜索引擎SOLR的 应用教程 2010-10 6/16/2022 版权所有,侵权必究All rights reserved Page 1 第1页,共58页Page 1 , Total58 6/16/20222006-10-25
目 录 1.5.1 1.5.2 1 概述 ............................................................................................................................................4 1.1 企业搜索引擎方案选型 ........................................................................................................ 4 Solr的特性 ............................................................................................................................4 1.2 Solr使用Lucene并且进行了扩展 ................................................................................... 4 1.2.1 Schema(模式) ...........................................................................................................5 1.2.2 1.2.3 查询 ................................................................................................................................5 1.2.4 核心 ................................................................................................................................5 1.2.5 缓存 ................................................................................................................................5 1.2.6 复制 ................................................................................................................................6 1.2.7 管理接口 ........................................................................................................................ 6 Solr服务原理 ....................................................................................................................... 6 1.3.1 索引 ................................................................................................................................6 1.3.2 搜索 ................................................................................................................................7 1.4 源码结构 .............................................................................................................................. 8 1.4.1 目录结构说明 ................................................................................................................. 8 1.4.2 Solr home说明 ...............................................................................................................9 solr的各包的说明 ......................................................................................................... 10 1.4.3 1.5 版本说明 ............................................................................................................................ 11 1.3版本 .........................................................................................................................11 1.4版本 .........................................................................................................................12 1.6 分布式和复制 Solr 架构 ................................................................................................... 12 2 Solr的安装与配置 .................................................................................................................... 13 2.1 在Tomcat下Solr安装 ......................................................................................................... 13 2.1.1 安装准备 ...................................................................................................................... 13 2.1.2 安装过程 ...................................................................................................................... 13 2.1.3 验证安装 ...................................................................................................................... 14 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 schema.xml................................................................................................................. 24 solrconfig.xml...............................................................................................................25 3 Solr的应用 ............................................................................................................................... 29 SOLR应用概述 .................................................................................................................. 29 3.1 Solr的应用模式 ............................................................................................................ 29 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 Solr Schema 设计(如何定制索引的结构?) ................................................................. 34 3.4.1 1.3 2.4.1 2.4.2 3.1.1 3.1.2 6/16/2022 版权所有,侵权必究All rights reserved Page 2 第2页,共58页Page 2 , Total58 6/16/20222006-10-25
4.2.1 4.2.2 4.2.3 4.5.1 4.5.2 4.5.3 4.5.4 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 Solr高亮使用 ................................................................................................................46 3.6.5 4 SolrJ的用法 ..............................................................................................................................46 4.1 搜索接口的调用实例 ..........................................................................................................46 Solrj的使用说明 ................................................................................................................. 47 4.2 Adding Data to Solr ..................................................................................................... 47 Directly adding POJOs to Solr .................................................................................... 49 Reading Data from Solr ...............................................................................................51 4.3 创建查询 ............................................................................................................................ 51 4.4 使用 SolrJ 创建索引 ........................................................................................................ 52 Solrj包的结构说明 ..............................................................................................................53 4.5 CommonsHttpSolrServer ............................................................................................ 53 Setting XMLResponseParser ......................................................................................53 Changing other Connection Settings ..........................................................................53 EmbeddedSolrServer ..................................................................................................54 5 Solr的实际应用测试报告 ......................................................................................................... 54 5.1 线下压力测试报告 ..............................................................................................................54 5.2 线上环境运行报告 ..............................................................................................................54 solr性能调优 ............................................................................................................................ 55 6 6.1 Schema Design Considerations ....................................................................................... 55 indexed fields ...............................................................................................................55 stored fields ................................................................................................................. 55 Configuration Considerations ............................................................................................55 6.2.1 mergeFactor ................................................................................................................ 55 6.2.2 mergeFactor Tradeoffs ................................................................................................56 Cache autoWarm Count Considerations ..........................................................................56 6.3 Cache hit rate(缓存命中率) .......................................................................................... 56 6.4 Explicit Warming of Sort Fields .........................................................................................56 6.5 Optimization Considerations .............................................................................................56 6.6 Updates and Commit Frequency Tradeoffs..................................................................... 56 6.7 Query Response Compression .........................................................................................57 6.8 Embedded vs HTTP Post ..................................................................................................57 6.9 6.10 RAM Usage Considerations(内存方面的考虑) ............................................................ 57 OutOfMemoryErrors .......................................................................................... 57 Memory allocated to the Java VM .....................................................................57 7 FAQ ......................................................................................................................................... 58 7.1 出现乱码或者查不到结果的排查方法: ............................................................................ 58 6.1.1 6.1.2 6.2 6.10.1 6.10.2 6/16/2022 版权所有,侵权必究All rights reserved Page 3 第3页,共58页Page 3 , Total58 6/16/20222006-10-25
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 查询语言的强大扩展!  支持对结果进行动态的分组和过滤  高级的,可配置的文本分析  高度可配置和可扩展的缓存机制  性能优化 6/16/2022 版权所有,侵权必究All rights reserved Page 4 第4页,共58页Page 4 , Total58 6/16/20222006-10-25
 支持通过 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 缓存  可配置的查询结果,过滤器,和文档缓存实例  可插拔的缓存实现  后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下 来,当热启时,当前搜索器处理目前的请求(???)。  后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器 和搜索器变化的时候高速缓存常查询的结果 6/16/2022 版权所有,侵权必究All rights reserved Page 5 第5页,共58页Page 5 , Total58 6/16/20222006-10-25
 快速和小的过滤器实现  支持自动热启的用户级别的缓存 1.2.6 复制  能够将使用 rsync 传输时改变的索引部分有效的发布  使用拉策略(Pull Strategy)来简化增加搜索器  可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择 1.2.7 管理接口  能够对缓存使用,更新和查询进行综合统计  文本分析调试器,能够显示每个分析器每个阶段的结果  基于 WEB 的查询和调试输出:解析查询输出,Lucene 的 explain 方法细节,能够解释为何 某个文档打分低,被排除在结果中等等 1.3 Solr服务原理 Solr 对外提供标准的 http 接口来实现对数据的索引的增加、删除、修改、查询。在 Solr 中, 用户通过向部署在 servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当 SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返 回响应。默认配置返回 Solr 的标准 XML 响应,也可以配置 Solr 的备用响应格式。 1.3.1 索引 可以向 Solr 索引 servlet 传递四个不同的索引请求: 1) add/update 允许向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。 2) commit 告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。 3) optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如 果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地 运行。优化是一个耗时较多的过程。 4) delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将 删除查询返回的所有文档。 要实现添加文档索引则只需要调用搜索接口以 HTTP POST 的方式提交 XML 报文。(索引接口: http://192.168.10.85:18080/solr/update),下面是添加文档的示例报文: 注:多核心时为这个地址 http://192.168.10.85:18080/solr/core0/update/ TWINX2048-3200PRO CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unb uffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail Corsair Microsystems Inc. electronics memory CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, hea t-spreader 6/16/2022 版权所有,侵权必究All rights reserved Page 6 第6页,共58页Page 6 , Total58 6/16/20222006-10-25
185 5 true VS1GB400C3 CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffer ed DDR 400 (PC 3200) System Memory - Retail Corsair Microsystems Inc. electronics memory 74.99 7 true 1.3.2 搜索 要实现搜索则只需要调用搜索接口发送 HTTP GET,示例: http://192.168.10.85:18080/solr/select?indent=on&version=2.2&q= solr&start=0&rows=10&fl=*%2Cscore&qt=standard&wt=standard 注:多核心时为这个地址http://192.168.10.85:18080/solr/core0/select/ 示例中,查询 词“ipad”的请求被提交,要求返回 10 个结果。想知道更多有关各种可选查询 选项的信息,请参看下文的“搜索语法”部分。 返回的搜索结果报文: 0 6 10 0 *,score true content:"faceted browsing" 1.058217 6/16/2022 版权所有,侵权必究All rights reserved Page 7 第7页,共58页Page 7 , Total58 6/16/20222006-10-25
http://localhost/myBlog/solr-rocks-again.html Solr is Great solr,lucene,enterprise,search,greatness Solr has some really great features, like faceted browsing and re plication Solr has some really great features, like faceted browsing and re plication 2007-01-07T05:04:00.000Z solr,lucene,enterprise,search,greatness 8 Solr is Great http://localhost/myBlog/solr-rocks-again.html Solr has some really great features, like faceted browsing and replication 1.4 源码结构 1.4.1 目录结构说明 我们下载的 Solr 包后,进入 Solr 所在的目录,我们可以看到以下几个目录:build、client、dist、 example、lib、site、src。下面分别对其进行介绍。 1) build:该目录是在 ant build 过程中生成的,其中包含了未被打包成 jar 或是 war 的 class 文件以及一些文档文件。 2) client:该目录包含了特定语言的 Solr 客户端 API,使得使用其他语言的用户能通过 HTTP 用 XML 与 Solr 进行通话。现在该目录里面虽然包含 javascript、python、ruby 三个子目录,但是到目前为止只包含一部分的 ruby 的代码,其他语言仍是空的。另外, Solr 的 Java 客户端称为 SolrJ,其代码位于 src/solrj 目录下面。在之后的文章中我会 详细介绍 Solr 客户端的使用。 6/16/2022 版权所有,侵权必究All rights reserved Page 8 第8页,共58页Page 8 , Total58 6/16/20222006-10-25
分享到:
收藏