为什么要学习Lucene

2016-12-29 15:57

现在Lucene在互联网行业的用的非常广泛,尤其是大数据时代的今天,那么根据自己的理解给大家简单的介绍一下为什么要学习Lucene。
1.对比一下Lucene的检索方式相比以前的检索方式有哪些优点

原来的方式实现搜索功能,我们的搜索流程如下图:
这里写图片描述

上图就是原始搜索引擎技术,如果用户比较少而且数据库的数据量比较小,那么这种方式实现搜索功能在企业中是比较常见的。但是数据量过多时,数据库的压力就会变得很大,查询速度会变得非常慢。我们需要使用更好的解决方案来分担数据库的压力。

现在的方案(使用Lucene),如下图:
这里写图片描述

为了解决数据库压力和速度的问题,我们的数据库就变成了索引库,我们使用Lucene的API的来操作服务器上的索引库。这样完全和数据库进行了隔离。
2.数据查询方法

  1. 顺序扫描法

所谓顺序扫描,例如要找内容包含一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。
这种方法是顺序扫描方法,数据量大就搜索慢。

  1. 倒叙索引

先举一个栗子:

例如我们使用新华字典查询汉字,新华字典有偏旁部首的目录(索引),我们查字首先查这个目录,找到这个目录中对应的偏旁部首,就可以通过这个目录中的偏旁部首找到这个字所在的位置(文档)。

现在有两篇文档:
Doc1: When in Rome, do as the Romans do.
Doc2: When do you come back from Rome?

Lucene会对以上两篇文档建立倒排索引
索引结构如下图:

这里写图片描述
(doc:表示文档 freq:表示出现的次数 pos:表示在文档出现的位置)

1、 提取资源中关键信息, 建立索引 (目录)
2、 搜索时,根据关键字(目录),找到资源的位置

3应用场景 :

1、 单机软件的搜索(word中的搜索)
2、 站内搜索 (baidu贴吧、论坛、 京东、 taobao)
3、 垂直领域的搜索 (818工作网) 
4、 专业搜索引擎公司 (google、baidu)