您的位置:首页 > 业界新闻

为什么要学习Lucene

2016-12-29 15:51 218 查看
现在Lucene在互联网行业的用的非常广泛,尤其是大数据时代的今天,那么根据自己的理解给大家简单的介绍一下为什么要学习Lucene。

1.对比一下Lucene的检索方式相比以前的检索方式有哪些优点

原来的方式实现搜索功能,我们的搜索流程如下图:



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

现在的方案(使用Lucene),如下图:



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

2.数据查询方法

顺序扫描法

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

这种方法是顺序扫描方法,数据量大就搜索慢。

倒叙索引

先举一个栗子:

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

现在有两篇文档:

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息