基于 Lucene 的 Apache Solr 企业搜索服务程序,它以可移植的 war 文件的形式发布,提供了立等可用的索引和查询功能。用户通过 HTTP 界面与 Solr 交互,用 XML 文档和 HTTP GET 参数向 Solr 提交索引内容和进行查询。Solr 还提供了主 - 从索引复制机制,以便在大规模的应用中分散查询负载。
Solr 最初是由 CNET Networks 开发的,后来在 2006 年被捐赠给了 Apache 软件基金会。目前它已被几个高流量的公众网站用作搜索程序。社区对其的反应也很好,有用户报告说在索引了高达数百万个文档的情况下,Solr 仍然维持良好的性能表现。
Solr 的特性可以分成以下几类:
Schema
- 定义文档中的索引域(field)和索引域类型
- 动态索引域功能,可以随时增加新索引域
- 显式类型消除了猜测索引域类型的需要
- 停止词(stopword)表、同义词表和保护词表的配置被放到外部文件中
- 多个新增的文本分析组件,包括分词、正则表达式过滤器和近似读音过滤器
查询
- HTTP 界面和可配置的应答格式(XML/XSLT、JSON、Python、Ruby)
- 可按任意数量的索引域排序
- 查询词高亮的上下文片断
- 固定的评分范围和前缀查询——没有 idf、coord 或 lengthNorm 因子,也没有限制查询所匹配的关键词数量
- 函数查询——评分受到索引域的的数值取值或次序的函数影响
- 日期计算——查询和更新中的日期可用与当前日期的差值来指定
核心
- 可插拔的查询处理器和可扩展的 XML 数据格式
- 由唯一索引主键确保的文档唯一性
- 批量更新和删除,以确保高性能
- 由索引变更所触发的命令,用户可对其进行配置
- 能正确处理用于排序和范围查询的数值类型
缓存
- 可插拔的缓存实现
- 在后台对缓存的“自动预热(Autowarming)”(当前搜索器最后访问的缓存内容将被自动填充进新搜索器的缓存,以在索引 / 搜索器变更时获得更高的缓存命中率)
- 快速 / 轻量的过滤器实现
- 带有“自动预热”功能的用户级缓存
复制
- 通过远程同步(rsync)传输高效分发变化了的索引片段
- 主动获取(Pull)策略,令搜索器的增加变得简捷
- 可配置的分发周期,允许在及时性和缓存利用率之间获得平衡
管理界面
- 对缓存利用率、更新和查询的全面统计信息
- 文本分析调试器,可显示文本分析器每一阶段的结果
- 带调试输出的 Web 查询界面
月初发布的 1.2 版增加了以下新特性:
这是 Solr 孵化成功后的第一次发布,这次发布带来了很多新特性,包括从 CSV/ 分割文本加载数据、定时自动提交、更快的词素划分(faceting)、反向过滤器(negative filter)、拼写检查处理器、近似读音词汇过滤器、正则表达式文本过滤器,以及更多的灵活的插件。
developerWorks 上最近发表的两篇系列文章详细介绍了Solr 的安装、配置、使用和调优的全过程。
查看英文原文: Apache Solr: Lucene Based Server Provides Highly Scalable Enterprise Search
评论