Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
Solr的特性包括
高级的全文搜索功能 专为高通量的网络流量进行的优化 基于开放接口(XML和HTTP)的标准 综合的HTML管理界面 可伸缩性-能够有效地复制到另外一个Solr搜索服务器 使用XML配置达到灵活性和适配性
可扩展的插件体系
Lucene是Apache下的一个开源项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。目前已经有很多应用程序的搜索功能是基于 Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。
给个比方就是,Lucene是给你一堆包,让你自己从底层构建一个数据库。而Solr是一个实现好的数据库程序,安装后就可以直接用了。
Solr服务原理
Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。 在Solr中,用户通过向部署在servlet 容器中的Solr Web应用程序发送 HTTP 请求来启动索引和搜索。 Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。
默认配置返回Solr的标准 XML 响应,也可以配置Solr的备用响应格式。
索引原理
可以向Solr索引servlet传递四个不同的索引请求: 1) add/update允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。 2) commit 告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。 3) optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。
4) delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。
搜索原理
要实现搜索则只需要调用搜索接口select发送HTTP GET。示例: http://192.168.10.85:18080/solr/select?indent=on&version=2.2&q=solr&start=0&rows=10&fl=*,score&qt=standard&wt=standard
注:多核心时为这个地址http://192.168.10.85:18080/solr/core0/select/