ApacheSolr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述所有 Field及其内容的 XML 文档就可以了。定制搜索的时候只需要发送 HTTPGET 请求即可,然后对 Solr 返回的信息进行重新布局,以产生利于用户理解的页面内容布局。Solr1.3 版本开始支持从数据库(通过 JDBC)、RSS 提要、Web 页面和文件中导入数据,但是不直接支持从二进制文件格式中提取内容,比如 MSOffice、AdobePDF 或其他专有格式。
更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引
Solr的特性包括:
ü 高级的全文搜索功能
ü 专为高通量的网络流量进行的优化
ü 基于开放接口(XML和HTTP)的标准
ü 综合的HTML管理界面
ü 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
ü 使用XML配置达到灵活性和适配性
ü 可扩展的插件体系
1.2.1 Solr使用Lucene并且进行了扩展
ü 一个真正的拥有动态域(DynamicField)和唯一键(UniqueKey)的数据模式(DataSchema)
ü 对Lucene查询语言的强大扩展!
ü 支持对结果进行动态的分组和过滤
ü 高级的,可配置的文本分析
ü 高度可配置和可扩展的缓存机制
ü 性能优化
ü 支持通过XML进行外部配置
ü 拥有一个管理界面
ü 可监控的日志
ü 支持高速增量式更新(Fastincremental Updates)和快照发布(SnapshotDistribution)
1.2.2 Schema(模式)
ü 定义域类型和文档的域
ü 能够驱动智能处理
ü 声明式的Lucene分析器规范
ü 动态域能够随时增加域
ü 拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域
ü 显式类型能够减少对域类型的猜测
ü 能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置
1.2.3 查询
ü 拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
ü 高亮的上下文搜索结果
ü 基于域值和显式查询的片段式搜索(FacetedSearch)
ü 对查询语言增加了排序规范
ü 常量的打分范围(Constantscoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制
ü 函数查询(FunctionQuery)-通过关于一个域的数值或顺序的函数对打分进行影响
ü 性能优化
1.2.4 核心
ü 可插拔的查询句柄(QueryHandler)和可扩展的XML数据格式
ü 使用唯一键的域能够增强文档唯一性
ü 能够高效地进行批量更新和删除
ü 用户可配置的文档索引变化触发器(命令)
ü 并发控制的搜索器
ü 能够正确处理数字类型,从而能够进行排序和范围搜索
ü 能够控制缺失排序域的文档
ü 支持搜索结果的动态分组
1.2.5 缓存
ü 可配置的查询结果,过滤器,和文档缓存实例
ü 可插拔的缓存实现
ü 后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。
ü 后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果
ü 快速和小的过滤器实现
ü 支持自动热启的用户级别的缓存
1.2.6 复制
ü 能够将使用rsync传输时改变的索引部分有效的发布
ü 使用拉策略(PullStrategy)来简化增加搜索器
ü 可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择
1.2.7 管理接口
ü 能够对缓存使用,更新和查询进行综合统计
ü 文本分析调试器,能够显示每个分析器每个阶段的结果
ü 基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等
三、Solr使用Lucene并且进行了扩展
ü 一个真正的拥有动态域(DynamicField)和唯一键(UniqueKey)的数据模式(DataSchema)
ü 对Lucene查询语言的强大扩展!
ü 支持对结果进行动态的分组和过滤
ü 高级的,可配置的文本分析
ü 高度可配置和可扩展的缓存机制
ü 性能优化
ü 支持通过XML进行外部配置
ü 拥有一个管理界面
ü 可监控的日志
ü 支持高速增量式更新(Fastincremental Updates)和快照发布(SnapshotDistribution)
1.2.2 Schema(模式)
ü 定义域类型和文档的域
ü 能够驱动智能处理
ü 声明式的Lucene分析器规范
ü 动态域能够随时增加域
ü 拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域
ü 显式类型能够减少对域类型的猜测
ü 能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置
1.2.3 查询
ü 拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
ü 高亮的上下文搜索结果
ü 基于域值和显式查询的片段式搜索(FacetedSearch)
ü 对查询语言增加了排序规范
ü 常量的打分范围(Constantscoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制
ü 函数查询(FunctionQuery)-通过关于一个域的数值或顺序的函数对打分进行影响
ü 性能优化
1.2.4 核心
ü 可插拔的查询句柄(QueryHandler)和可扩展的XML数据格式
ü 使用唯一键的域能够增强文档唯一性
ü 能够高效地进行批量更新和删除
ü 用户可配置的文档索引变化触发器(命令)
ü 并发控制的搜索器
ü 能够正确处理数字类型,从而能够进行排序和范围搜索
ü 能够控制缺失排序域的文档
ü 支持搜索结果的动态分组
1.2.5 缓存
ü 可配置的查询结果,过滤器,和文档缓存实例
ü 可插拔的缓存实现
ü 后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。
ü 后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果
ü 快速和小的过滤器实现
ü 支持自动热启的用户级别的缓存
1.2.6 复制
ü 能够将使用rsync传输时改变的索引部分有效的发布
ü 使用拉策略(PullStrategy)来简化增加搜索器
ü 可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择
1.2.7 管理接口
ü 能够对缓存使用,更新和查询进行综合统计
ü 文本分析调试器,能够显示每个分析器每个阶段的结果
ü 基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等