ssm学习——Lucene建立索引

一:理论知识

  1.非结构化数据查询方法

    1)顺序扫描法

      太慢,效率不高。

    2)全文检索法

      对需要查询的文档创建索引,再对其进行搜索。其实说白了就是为了使其结构化。

  2.索引创建和搜索流程图

    1)流程图

      

    2)索引库

      索引库是由两部分组成的,一部分是索引,另一部分是文档对象(不是原始文档)

  3.流程图详解

    1)创建文档对象

      有以下规则

        a.不同的文档可以有不同的Field

        b.同一个文档可以有相同的Field

        c.每一个文档有一个唯一的编号id

    2)分析文档

      分析的过程是经过对原始文档提取单词,将字母转换成小写,去除标点符号等过程最终生成语汇单元(一个一个的单词)。

      注意:不同的域中生成的term是不同的term。

      term好像是索引的基本单位,term包含文档域名和单词内容。例如一个文档的文件名包含java是不同于内容中包含java的。这是通过term来实现的。

    3)创建索引

      为每一个term,指向所在的文档对象。Lucene是倒排索引,是先找到这个term再找到这个文档,这种方法比顺序查找效率高。

二:实例

  1.准备工作

    1)创建java工程

    2)导包

      lucene-core-4.10.3.jar

      lucene-analyzer-common-4.10.3.jar

      lucene-queryparser-4.10.3.jar

      common-io-2.4.jar

  2.实现步骤

    1)实现步骤

      1.创建一个IndexWriter对象

        指定索引库存放位置

        指定一个分析器

      2.创建document对象

      3.创建field对象

      4.使用IndexWriter对象进行索引创建

      4.关闭IndexWriter对象

    2)代码

  3.Field的一些说明

    1)Field域有几大实现类,选择依据:

      是否分析:是否对域的内容进行分词处理。是否要对域的内容进行查询

      是否索引:无论是否分析,但是索引要搜索到。有一些不分析,但是也要进行索引。

      是否存储:将Field值存储在文档对象中,凡是将来要从Document中获取的Field都要存储。

    2)Field的子类

      

    3)使用工具查看建立的索引库

      Luke - Lucene Index Toolbox

 

     

注意事项:Lucene不提供信息采集的类库,需要其它库支持。(Nutch,jsoup,heritrix)

猜你喜欢

转载自www.cnblogs.com/Dbbf/p/9901105.html