全文检索主要是为了解决非结构化数据,数据量大的检索问题。在日常的应用中,数据分为结构化数据和非结构化数据,结构化数据指的数据库的数据或其他的一些数据,这些数据利用常规的检索的方法,就可以解决检索问题。但是如果数据量比较大,并且不能使用数据库的索引查询的时候,这个时候查询的速度就比较慢,这个时候就可以借助全文检索技术。
全文检索技术,本质上是和数据的索引查询原理一样。可以说全文检索就是一个专门去建立索引 查询的技术,java全文检索j技术目前市场上使用的最多的是apache提供的lucene,lucene是全文检索引擎工具包,但是它并不是一个完整的全文搜索引擎。基于lucene开发的全文搜索技术目前使用最多的是elasticsearch和solr。
sor和Elasticsearch的区别:
1、Elasticsearch支持分布式,solr不支持分布式(可以借助Zookeeper进行分布式管理)
2、Solr建立索引的时候,效率比较低,搜索速度比较快,elasticSearch建立索引效率比较高,到时搜索效率较低。所以在一些传统搜索应用中,使用Solr比较多,而ElasticSearch更适用于一些新兴的实时搜索应用
3.EasticSearch仅支持json数据格式,而Solr支持更多格式的数据
使用上的区别
1、solr和elasticSearch都可以使用相应的客户端,利用java代码向索引库中存入数据,不同是solr在存入数据的时候,域的属性只用选择保存,才会将数据存入索引库,而elasticSearch即使选择不保存,也会将数据存在文档中。所以在查询的过程中,solr无法查到没有保存的数据,而elasticSearch可以
2.elasticSearch可以和spring data结合使用spring data elasticSearch,建立索引。