web搜索引擎(一)-- lucene原理

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

一:java中的引擎简介

  java中的9大引擎框架可以从底层实现分为2个大类:基于lucene实现以及扩展的各式搜索以及Nutch实现可爬虫式的引擎。

我们将主要以lucene作为技术主干。

0.使用场景

  当我们在一个实体类中实现多个属性同时查询,一次遍历每一个属性实现like查询,这样不仅繁琐而且特别浪费资源。

1.什么是lucene

  lucene是一套全文检索引擎的架构,而不是一个完整的全文检索引擎。简而言之,你可以把它当成一个工具包,可以整合自己的

技术来实现一套完整的全文检索和搜寻额度项目方案。

2.lucene的优势与特点

(1)平台独立性,其基于8字节的索引文件格式,可以使其脱离平台的束缚。

(2)分块检索,区别于传统的倒叙索引,以分块索引实现多线程式的检索。、

(3)面向对象的特性。

(4)应用程式接口,lucene起本省是一个以应用程式接口对外开放,以流方式实现传输。(类似于java的接口,好处。。)

(5)强大的搜索引擎,其本省完成了一套查询,分区查询,模糊查询的查询方式,用户直接调用即可。

二:lucene检索

1.基于luncene的检索分为2个过程: 建立索引和搜索

     过程简析为:当有新的查询进入lucenen进行对文件词条分析,生成索引,查询开始检索索引并进行词条解析,产生结果。

 整个执行顺序为:

  搜索1 -》索引1 -》索引2 -》索引3 -》搜索2 -》搜索3 -》搜索4 -》搜索5 -》搜索6。其中2,3俩个根据情况可调换。

2.lucene的输入和输出

 在上面我们说过lucene对外开放的是类似于java中的接口,因此,就有了接口参数和接口返回,至于接口内的实现我们后面说。

(1)lucene的接口参数和接口返回

   lucene的API接口设计是一个基于文件式的应用程接口。其输入输出的结构类似于List  =》 record =》 str(即表 =》 单条数据

=》单个字段)。因此很多数据库都可以直接映射到存储结构/接口中。很多时候,我们可以将Lunce当成一个支持全文检索的数

数据库系统。

(2)接口的实现原理

   在一般的结构性数据库中(如mysql),我们进行模糊查询 like %???%这样的方式来查询,这样如果数据库中有100万条数据,

该查询就要进行烧苗至多100万条数据。但是如果我们知道该数据在前10万条中,那么至多烧苗10条。即在传统的方式添加了

一个index < 100000这个条件。那么如何添加index <100000这个条件,比如我们基于创建日期等等做相关条件,这里涉及到一个

核心的问题:排序的问题。我们认为上述条件就是添加了另外一条排序条件。

  上述中我们可以了解添加的排序条件越多,其搜索范围越小,其效率越高。这些排序条件可以看成建立索引的方式。索引建立

的越合适其搜索效率越高(并不是索引越多越好的)。

(3)lucene的接口实现方式

    大部分的搜索(数据库)引擎都是用B树结构来维护索引的,基于B树结构索引一旦更新索引会导致大量的IO操作。而在

lucene的实现中,其维护方式类似于链式的新增,或者定时合并一些相邻的链,减小链长度。

三:lucene中重要的概念

1.analyzer

  分析器,即作用于图中搜索1和索引1指向的位置,用来将字符串按照一定的规则划分,并去掉无效词句,简而言之,语义解析

2.document

  数据源,可以使文本,字符串或者数据库中的记录。在经过lucene的索引处理,该数据源都会以Document的形式存储和展示。

3.field

  数据源中的信息域,可以是标题,正文,时间等等。这些信息都是通过field在document中存储的。其中field中有2个属性存储和

索引。其控制着field中的信息是否可以存储,是否可以检索。

4 term

   term是搜索的最小单位,它表示文档的一个词语,term由两部分组成:它表示的词语和这个词语所出现的field。

5.tocken

   tocken是term的一次出现,它包含trem文本和相应的起止偏移,以及一个类型字符串。一句话中可以出现多次相同的词语,它

们都用同一个term表示,但是用不同的tocken,每个tocken标记该词语出现的地方。

6.segment

就像上面所说,一个索引的新增都是新增在头尾的方式,然后定期的进行比较和并,这里没有合并前的索引文件就是segnebt。

 

猜你喜欢

转载自blog.csdn.net/qq_35755863/article/details/94566076