Lucene实现全文检索的流程

Posted xiaoxiaobaizht

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene实现全文检索的流程相关的知识,希望对你有一定的参考价值。

本文内容来自恩师

 

以下正文...

Lucene

1.创建索引

  1) 获得文档

    原始文档:要基于哪些数据来进行搜索,那这些数据就是原始文档.

    搜索引擎:使用爬虫技术获得原始文档.

    站内搜索:使用数据库中的数据

    本机:直接使用io流读取本地磁盘上的数据

  2) 构建文档对象

    对应每个原始文档创建一个Document对象

    每一个document对象中包含多个域(field)

    域中保存的就是原始文档数据

      域的名称

      域的值

    每个文档都有一个唯一的编号,就是文档id

   3)分析文档

    就是分词的过程

      (1)根据空格进行字符串拆分,得到一个单词列表

      (2)把单词统一换成小写

      (3)去除标点符号

      (4)去除停用词(即没有意义的词)

      每个关键词都封装到一个Term对象中

        Term对象中包含两部分内容

          关键词本身所在的域

          关键词本身

      不同域中拆分出来的相同的关键词是不同的Term.

    4) 创建索引

      基于关键词列表创建一个索引.保存到索引库中.

        索引库中包含的内容:  

            索引

            document对象

            关键词和文档的对应关系

      通过词语找文档,这种索引的结构叫做倒排索引文档.

2.查询索引

    1) 用户查询接口

      用户输入查询条件的地方

      例:百度的搜索框

    2) 把关键词封装成一个查询对象

      要查询的域

      要搜索的关键字

    3) 执行查询

      根据要查询的关键词到对应的域上进行的搜索.

      找到关键词,根据关键词找到对应的文档  

    4) 渲染结果

      根据文档的id找到文档对象

      对关键词进行高亮显示

      分页处理

      最终展示给用户看

以上是关于Lucene实现全文检索的流程的主要内容,如果未能解决你的问题,请参考以下文章

solr调用lucene底层实现倒排索引全流程解析

solr调用lucene底层实现倒排索引全流程解析

lucene

Lucene全文搜索原理与使用

Lucene快速入门

Lucene