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