Solr
一、solr是一个高性能,采用java5开发,基于lucene的全文搜索服务器。
二、solr和lucene的区别
1、Solr是基于Lucene做的,Lucene是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时你仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而Solr的目标是打造一款企业级的搜索引擎系统,因此它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种API可以让你的应用使用搜索服务,而不需要将搜索逻辑耦合在应用中。而且Solr可以根据配置文件定义数据解析的方式,更像是一个搜索框架,它也支持主从、热换库等操作。还添加了飘红、facet等搜索引擎常见功能的支持。因而,Lucene使用上更加灵活,但是你需要自己处理搜素引擎系统架构,以及其他附加附加功能的实现。而Solr帮你做了更多,但是是一个处于高层的框架,Lucene很多新特性不能及时向上透传,所以有时候可能发现需要一个功能,Lucene是支持的,但是Solr上已经看不到相关接口。
2、 Solr通过schema.xml的方式来配置Filed,与Lucene相比,这种方式更为灵活。特别 是在团队开发中,更易于团队协同作战。而且solr还提供了Copy Field和Dynamic Filed: 这两种Lucene没有的Filed,这使得文档建模更为灵活,功能更加强大。
三、solr使用过程
1、solr服务器搭建,因为solr是用java5开发的,所以需要jdk和tomcat搭建部署
2、搭建完成后,我们需要将要展示的字段引入solr的库中。配置spring与solr结合,工程启动的时候启动solr
3、将数据库中的查询内容导入到solr索引库,这里使用的是solrj的客户端实现的。具体使用可以参考api
4、建立搜索服务,供客户端调用。调用solr,查询内容,这中间有分页功能的实现。solr高亮显示的实现。
5,客户端接收页面的请求参数,调用搜索服务,进行搜索。
四、solr全文检索和数据库检索的区别
一般就是性能。数据库一般使用 like 进行检索,会把表中数据进行一行一行的扫描,性能慢。而solr是将数据拿过来分词建立索引,然后在根据建立的索引进行查找,这样虽然多了一个创建索引的过程,但是 是一次创建多次使用。
五、solr与同类型技术相比较
solr:2004年出现的
ElasticSearch:2010年出现的
与solr一样的技术还有ElasticSearch。它与solr一样,也是基于lucene的,rest风格的分布式搜索引擎。Solr特点:查询快,但是更新索引慢(即插入删除慢),一般用于电商等提前录入好数据,之后查询特别多的应用;而ElastaicSearch简称ES,它建立索引快,查询相对比solr慢点。所以,ElasticSearch的实时搜索效率高,多用于新浪等。
六、实时性搜索
根据时间优先级对信息进行排序,这似乎是人们意识中自然而然的事情,也是实时搜索最具原始吸引力的地方