Lucene系列一之全文检索

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/itsoftchenfei/article/details/83051777

Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库。--维基百科

1. Luncene重要性

版本更新的非常快,现在最新的版本已经是7.2.1,已经成为搜索引擎的内核。你熟悉的solr、elasticsearch都有基于它实现。他们关系就好似发动机与汽车,了解发动机能够让你更好的驾驭solr、elasticsearch。

2. 为什么需要搜索引擎

  • 传统的关系型数据库针对文本列的索引失效问题(也不适合建索引),比如我们查询标题 LIKE ‘%钓鱼岛%’会导致Like 时索引失效,全表扫描,数据量大时是噩梦
  • 查询出来的结果进行相关度排名,传统的关系型数据库做到会比较吃力
  • 数据结构的多样性支持,结构化数据(用表、字段表示的数据)->半结构化数据(xml 、html)->非结构化数据(文本、文档、图片、音频、视频等)

这两者解决的问题是不一样。数据库搜索在匹配效果、速度、效率等方面都逊色于全文检索。

3. 适用场景

核心:大量结构化、半结构化、非结构化文本类数据的实时搜索

  • 网页搜索
  • 内容提供网站的内容搜索(如 新闻、论坛、博客网站)
  • 电子商务网站的商品搜索
  • 如果你负责的系统数据量大,通过数据库检索慢,可以考虑用搜索引擎来专门负责检索。

4. 搜索引擎的核心部件

  • 数据源
  • 分词器
  • 反向索引(倒排索引)
  • 相关性计算模型

5. 什么是相关度排名

参阅另一篇《相关性

6. 全文检索是什么

全文数据库是全文检索系统的主要构成部分。所谓全文数据库是将一个完整的信息源的全部内容转化为计算机可以识别、处理的信息单元而形成的数据集合。全文数据库不仅存储了信息,而且还有对全文数据进行词、字、段落等更深层次的编辑、加工的功能,而且所有全文数据库无一不是海量信息数据库。--百度百科

全文检索首先将要查询的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的。这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
全文检索(Full-Text Retrieval)是指以文本作为检索对象,找出含有指定词汇的文本。
全面、准确和快速是衡量全文检索系统的关键指标。

我们要知道:

  • 只处理文本
  • 不处理语义。
  • 搜索时英文不区分大小写
  • 结果列表有相关度排序。(查出的结果如果没有相关度排序,那么系统不知道我想要的结果在哪一页。我们在使用百度搜索时,一般不需要翻页,为什么?因为百度做了相关度排序:为每一条结果打一个分数,这条结果越符合搜索条件,得分就越高,叫做相关度得分,结果列表会按照这个分数由高到低排列,所以第1页的结果就是我们最想要的结果。)
    在信息检索工具中,全文检索是最具通用性和实用性的。

最后,数据库适合结构化数据的精确查询,而不适合半结构化、非结构化数据的模糊查询及灵活搜索(特别是数据量大时),无法提供想要的实时性。如果想了解的更多,请参阅下章反向索引

猜你喜欢

转载自blog.csdn.net/itsoftchenfei/article/details/83051777
今日推荐