文章目录

  • 1、什么是全文检索
  • 2、全文检索技术
    • 1)Lucene
    • 2)Solr与ES区别:
  • 3、Restful架构
    • 1)RESTful架构的主要原则
    • 2)RESTFUL其中的两个特点
    • 3)URI和URL的区别

1、什么是全文检索

我们生活中的数据分为两种:结构化数据和非结构化数据
结构化数据:指有固定格式或有限长度的数据,如数据库、
非结构化数据(全文数据):不定长或无格式的数据,如邮件、互联网数据;

对非结构化数据及全文数据,先建立索引,在对索引进行搜索的过程叫全文检索(Full-text Search)

全文检索是指:
通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数。用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了。

2、全文检索技术

  • Lucene:可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库(框架);
  • Solr:基于Lucene,简化开发,可以实现分布式搜索,传统搜索应用的有力解决方案。可以使用rest方式的http请求进行远程api的调用;
  • Elasticsearch:基于Lucene,更倾向于实时搜索。可以使用rest方式的http请求进行远程api的d调用;

1)Lucene

但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成到你的应用中,并且Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Lucene缺点
1)只能在Java项目中使用,并且要以jar包的方式直接集成项目中.
2)使用非常复杂-创建索引和搜索索引代码繁杂
3)不支持集群环境-索引数据不同步(不支持大型项目)
4)索引数据如果太多就不行,索引库和应用所在同一个服务器,共同占用硬盘.共用空间少。

2)Solr与ES区别:

当单纯的对已有数据进行搜索时,Solr更快。
Solr缺点:当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。大型互联网公司,实际生产环境测试,将搜索引擎从Solr转到 Elasticsearch以后的平均查询速度有了50倍的提升。

总结:
二者安装都很简单。
1、Solr 利用 Zookeeper 进行分布式管理,而Elasticsearch 自身带有分布式协调管理功能。
2、Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
3、Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
4、Solr 是传统搜索应用的有力解决方案,但 Elasticsearch更适用于新兴的实时搜索应用

3、Restful架构

Restful是一种面向资源的架构风格,是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构

1)RESTful架构的主要原则

  • 对网络上所有的资源都有一个资源标志符。
  • 对资源的操作不会改变标识符。
  • 同一资源有多种表现形式(xml、json)
  • 所有操作都是无状态的(Stateless)
    符合上述REST原则的架构方式称为RESTful

2)RESTFUL其中的两个特点

1)每一个URI代表1种资源;
2)客户端使用HTTP动词GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

3)URI和URL的区别

URI:Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;