Apache Solr
导言
说起Apache Lucene,可以说无人不知,无人不晓,但是说道Apache Solr,恐怕知道的不多。看看Apache Solr的说明:
Solr是一个基于Lucene java库的企业级搜索服务器
,包含XML/HTTP,JSON API, 高亮查询结果,faceted search(不知道该如何翻译,片段式搜索),缓存
,复制还有一个WEB管理界面。Solr运行在Servlet容器中
。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展
。
在本篇文章中,我们先看看Solr向我们承诺了什么,或者说Solr宣称的特性们。
无废话Solr
Solr是一个拥有象WebService一样接口的独立运行的搜索服务器。你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且得到XML格式的结果。Solr的特性包括:
高级的全文搜索功能
专为高通量的网络流量进行的优化
基于开放接口(XML和HTTP)的标准
综合的HTML管理界面
可伸缩性-能够有效地复制到另外一个Solr搜索服务器
使用XML配置达到灵活性和适配性
可扩展的插件体系
Solr使用Lucene并且扩展了它!
一个真正的拥有
动态域
(Dynamic Field)和唯一键(
Unique Key)的数据模式(Data Schema)对Lucene
查询语言的强大扩展
!支持对结果进行动态的分组和过滤
高级的,可配置的文本分析
高度可配置和可扩展的缓存机制
性能优化
支持通过XML进行外部配置
拥有一个管理界面
可监控的日志
支持
高速增量式更新
(Fast incremental Updates)和快照发布(Snapshot Distribution)
Schema(模式)
定义域类型和文档的域
能够驱动智能处理
声明式的Lucene分析器规范
动态域能够随时增加域
拷贝域功能
允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域显式类型能够减少对域类型的猜测
能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置
查询
拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
高亮的上下文搜索结果
基于域值和显式查询的片段式搜索(Faceted Search)
对查询语言增加了排序规范
常量的打分范围(Constant scoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制
函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响
性能优化
核心
可插拔的查询句柄(Query Handler)和可扩展的XML数据格式
使用唯一键的域能够增强文档唯一性
能够高效地进行批量更新和删除
用户可配置的文档索引变化触发器(命令)
并发控制的搜索器
能够正确处理数字类型,从而能够进行排序和范围搜索
能够控制缺失排序域的文档
支持搜索结果的动态分组
缓存
可配置的查询结果,过滤器,和文档缓存实例
可插拔的缓存实现
后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。
后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果
快速和小的过滤器实现
支持自动热启的用户级别的缓存
复制
能够将使用rsync传输时改变的索引部分有效的发布
使用拉策略(Pull Strategy)来简化增加搜索器
可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择
管理接口
能够对缓存使用,更新和查询进行综合统计
文本分析调试器,能够显示每个分析器每个阶段的结果
基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。
本文永久链接:https://blog.naaln.com/2013/10/apache-solr/