搜索引擎-Lucene | 技术达人

Posted 京西

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索引擎-Lucene | 技术达人相关的知识,希望对你有一定的参考价值。

常用的搜索功能


对于搜索我们并不陌生,例如:“我的电脑”、“应用系统”、“百度”……

大家可以思考一下:以上几种搜索有什么相同点与不同点?


相同点:都是从输入条件中匹配出检索的结果。

不同点:查询范围不同(磁盘、数据库、互联网)。


我们都知道数据库搜索用like模糊查找,那么站内搜索、互联网搜索又是通过什么方式呢?他与数据库查找又有什么不同呢?接下来我们先从概念说起。


   搜索引擎概念



搜索引擎由用户接口、索引器 、检索器和搜索器四个部分组成。


用户接口:输入用户查询、显示查询结果、提供用户相关性反馈机制。

索引器:理解搜索器所搜索的信息,从中抽取出索引项。

检索器:在索引库中快速检出文档,进行相关度评价,排序等。

搜索器:在互联网中漫游、发现和搜集信息。


索引器与检索器合称为全文检索技术。


   全文检索概念


全文检索是:“从很多文本中建立索引并快速找出想要的数据”。


我们可以把这句话做一下分词:很多、文本、建立索引、快速查找、想要的数据。

解释一下各个词的含义:


很多:互联网海量的数据都能够处理。

文本:只处理文本内容,不处理视频,音频,语义等。

建立索引:这里举个例子:你要搜索“1+1等于几” 搜索结果会是包含“1+1等于几”的文本;而不是去理解你的语义而结果变成“2”。

快速查找:数据量再大必须要快速响应,一般在毫秒级别。

想要的数据:首先是数据要准确,其次要有相关度排名以及结果集列表等才算是想要的数据。


综上所述,我们可以简单将全文检索特点概况为:


1、准确、快速、结果列表、相关度排序;

2、只处理文本、不处理语义以及多媒体;

3、不同于数据库like查询数据库搜索不满足快速、准确、相关度排序等特点;

4、适用场景:站内搜索,如购物网,论坛,文章等。


全文检索总结:

全文检索——搜索引擎中的索引器与检索器统称,是抽象概念。

Lucene——实现全文检索的技术框架。


 Lucene

1.建立工程

 我们可以到apache官网下载Lucene开发包,开发环境只需要加入:


1、lucene-core-v.jar (核心包)

2、lucene-analyzers-common-v.jar (分词器)

3、lucene-highlighter-v.jar(高亮)

4、lucene-queryparser-v.jar (分词依赖)

5、lucene-memory-v.jar (高亮依赖)


建立普通Java项目导入以上jar,就可以开发了。

                                                  

2.LuceneAPI概念

搜索引擎可以表示为下图:

搜索引擎-Lucene | 技术达人


去头去尾,我们只关心索引库部分(全文检索),那么它又是如何工作的? 如下图:

搜索引擎-Lucene | 技术达人


这时我们看到索引库分为两部分,查询与操作。其中操作部分提供了一个IndexWriter接口以及增,删,改方法。查询提供了IndexSearch接口以及search方法。


IndexWriter又是如何存入互联网数据的呢?其实很简单Lucene将所有文本都抽化成了一个对象:Document。

搜索引擎-Lucene | 技术达人

所有要保存的内容都转化成了Document对象,其中每个字段转化成Field,Field类似Map,存入key以及value。


举例:我想存入一篇html文章,只需要几个步骤:


1、new Document对象 

2、new Field("url","baidu.com") ,new Field("body","body") 

3、document.add(field1),document.add(field2)


我们在看上图document对象建立好以后,就可以用Lucene提供的API进行保存了。


下面贴出一个简单的代码实例,大家也可以思考一下:如何进行相关度排名,如何进行分词,如何将相关词高亮展示。索引库内部又是如何工作的,数据存储又是什么样的。


建立索引:

搜索引擎-Lucene | 技术达人

查询:

搜索引擎-Lucene | 技术达人

搜索引擎-Lucene | 技术达人

欲知后事如何,且听下回分解。搜索引擎-Lucene | 技术达人



更多精彩内容点击“阅读原文”

以上是关于搜索引擎-Lucene | 技术达人的主要内容,如果未能解决你的问题,请参考以下文章

技术介绍一款全文搜索引擎--lucene

开源搜索技术的核心引擎 —— Lucene

技术干货 | 搜索那点事儿:Lucene文件存储和读取技术详解

lucene全文检索技术

1K数据集+SpringBoot+Thymeleaf基于全文检索技术lucene开发的搜索引擎

数据平台.搜索引擎-Lucene