码迷,mamicode.com
首页 > Web开发 > 详细

ssm学习——Lucene建立索引

时间:2018-11-03 17:29:28      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:color   查询   文件   规则   效率   基本   搜索   顺序   document   

一:理论知识

  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)

 

ssm学习——Lucene建立索引

标签:color   查询   文件   规则   效率   基本   搜索   顺序   document   

原文地址:https://www.cnblogs.com/Dbbf/p/9901105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!