美文网首页
Lucene 入门 02 - 全文检索基本流程

Lucene 入门 02 - 全文检索基本流程

作者: __Y_Q | 来源:发表于2020-01-15 11:38 被阅读0次

上一章说过了什么是全文检索和全文检索应用的场景有哪些.这章主要来简单的实现一把全文检索. 了解流程及步骤.
上图.


流程图

从左至右开始逐个分析.

绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:
确定原始内容即要搜索的内容采集文档创建文档分析文档索引文档

红色表示搜索过程,从索引库中搜索内容,搜索过程包括:
用户通过搜索界面创建查询执行搜索,从索引库搜索渲染搜索结果

  1. 原始文档
    • 简单的理解为原始的数据.
  2. 创建索引
    • 获得文档
      • 比如通过爬虫获取的数据文档,数据库中的数据, 或者直接使用 IO 流读取磁盘上的文件.来获得文档.
    • 构建文档对象
      • 获得原始内容的目的是为了索引, 在索引前需要将原始内容创建成 Document ( 文档 ), 文档中包含了一个或多个 Field ( 域 ), 域中存储的是内容.
      • 可以将磁盘上的一个文件当做一个 Document, Document 中包括 Field, Field 是以域名和域值的形式存在. 比如其中一个 Field (name="filename" value = "spring.txt")
      • 每个 Document 可以有多个 Field , 不同的 Document 可以有不同 Field , 同一个 Document 可以有相同的 Field (域名和域值都相同). 每个 Document 都有一个唯一的编号, 就是文档的 ID.
    • 分析文档(分词)
      • 将原始内容创建为包含 Field ( 域 ) 的 Document ( 文档 ), 需要再对域中的内容进行分词, 分析的过程是经过对原始文档提取单词, 大小写转换, 去除标点符号, 禁用敏感词等一系列的操作最终生成的语汇单元, 可以将语汇单元理解为一个一个的单词. 然后每个单词又被封装为一个个的 Term 对象
      • 不同的 Field 中拆分出来的相同的单词, 是不同的 Term
      • Term 中包含两部分, 一部分是文档的域名, 一部分是单词的内容.
    • 创建索引
      • 对所文档分析等出的语汇单元进行索引. 索引的目的是为了搜索. 最终要实现只搜索被索引的语汇单元从而找到 Document.
      • 注: 创建索引是对语汇单元索引, 通过词语找到文档, 这种索引的结构叫倒排索引结构
      • 传统方法是根据文件找到该文件的内容, 然后在文件中匹配搜索关键字, 这种方法是顺序扫描方法. 当数据量大的时候, 搜索就会变的特别慢.
      • 倒排索引结构也叫反向索引结构, 包括索引和文档两部分, 索引及词汇表, 规模较小, 文档集合较大.


        倒排索引
      • 如上图所示, 包含 Lucene 词的 文档有: 2,3,10,35,92
  3. 查询索引
    • 用户查询接口
      • 全文检索系统提供给用户搜索的界面, 供用户提交搜索的关键字, 搜索完成展示搜索结果.
      • Lucene 不提供用户搜索界面的功能, 需要根据需求自己开发搜索页面.
    • 创建查询
      • 用户输入完关键字进行查询之前, 需要先构建一个查询对象, 查询对象中可以指定要查询搜索的域, 关键字等等. 查询对象会生成具体的查询语法.
      • 例 "file_name":"lucene" 表示要检索 field_name 域内容为 lucene 的文档
    • 执行查询
      • 就是搜索索引的过程
      • 根据查询语法在倒排索引词典中分别找出索引词的索引, 从而找到索引说链接的文档链表.
      • 比如搜索为"fileName : Lucene" 表示搜索出 fileName 域中包含 Lucene 的文档, 搜索过程就是在索引上查找域为 fileName, 并且关键字为 Lucene 的 Term, 并根据 Term 找到文档 ID 列表.
    • 渲染结果.
      • 最后就是将查询出来的结果以一个友好的界面展示给用户.

这里及是 Lucene 全文检索的一个基本的流程, 下一章会用代码实现 Lucene 全文检索的基本创建,查询,删除,修改等过程.

相关文章

  • Lucene & 全文检索

    目录结构:1.全文检索 2.Lucene入门3.Lucene进阶 全文检索 一, 生活中的搜索:1.Win...

  • Lucene学习笔记

    概要: 全文检索的原理和基本概念(铺垫) Lucene简介,索引文档和检索文档的过程(主要) Lucene 相似度...

  • Lucene学习图解

    lucene基本原理Lucene学习总结之一:全文检索的基本原理Lucene底层原理和优化经验分享(1)-Luce...

  • Lucene入门

    什么是Lucene 可以使用Lucene实现全文检索。Lucene是apache下的一个开放源代码的全文检索引擎工...

  • Lucene入门

    参考 Lucene学习总结之一:全文检索的基本原理Lucene就是这么简单Lucene思维导图,让搜索引擎不再难懂...

  • Lucene—全文检索

    1. 案例分析:什么时全文检索,如何实现全文检索   1.1 案例   实现一个文件的搜索功能,通过关键字搜索文件...

  • Lucene 全文检索

    Lucene 全文检索 Field域 Field是文档中的域,包括Field名和Field值两部分,一个文档可以...

  • 全文检索Lucene

    首先我们要认识一下现在生活中主要的搜索有四种 1.windows中搜索 2.Eclipse中搜索 3.在数据库中搜...

  • lucene 全文检索原理和流程

    Lucene 是一个高效的,基于Java 的全文检索库。 说起查找,我们首先想起的就是顺序查找,比如我们有10个文...

  • [转]全文检索

    原文链接# Lucene学习总结之一:全文检索的基本原理,这是我遇见最好的入门,近10年前的文章如今读来依然让人耳...

网友评论

      本文标题:Lucene 入门 02 - 全文检索基本流程

      本文链接:https://www.haomeiwen.com/subject/zyffzctx.html