Lucene学习总结

  

   数据分类

   结构化数据:有固定类型或者有固定长度的数据
   例如:数据库中的数据(mysql,oracle等), 元数据(就是windows中的数据)


   结构化数据搜索方法:
   数据库中数据通过sql语句可以搜索
   元数据(windows中的)通过windows提供的搜索栏进行搜索

   非结构化数据:没有固定类型和固定长度的数据
   例如: Word文档中的数据, 邮件中的数据


   非结构化数据搜索方法:
   Word文档使用ctrl+F来搜索

   顺序扫描法
   Ctrl+F中是使用的顺序扫描法,拿到搜索的关键字,去文档中,逐字匹配,直到找到和关键字一致的内容为止.
   优点: 如果文档中存在要找的关键字就一定能找到想要的内容
   缺点: 慢, 效率低


   全文检索算法(倒排索引算法):

   将文件中的内容提取出来, 将文字拆封成一个一个的词(分词), 将这些词组成索引(字典中的目录), 搜索的时候先搜索索引,通过索引找文档,这个过程就叫做全文检索.
   分词: 去掉停用词(a, an, the ,的, 地, 得, 啊, 嗯),因为搜索的时候搜索这些词没有意义,将句子拆分成词,去掉标点符号和空格
   优点: 搜索速度快
   缺点: 因为创建的索引需要占用磁盘空间,所以这个算法会使用掉更多的磁盘空间,这是用空间换时间

  全文检索的原理类似是我们使用的字典,有目录和正文两部分组成,查询的时候先查询目录,然后根据目录查询页数,根据页数查询我们需要的内容。

 

   什么是Lucene?

   Lucene是apache下的一个顶级开源项目,提供了一个全文检索引擎工具包,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供的一个简单易用的工具包,以方便的在目标系统中实现全文检索功能。

   使用场景

   对于数据量大、数据结构不固定的数据采用全文检索方式搜索,比如百度、Google等搜索引擎、论坛站内搜索、电商网站站内搜索等。

   Lucene应用领域
    1.互联网全文检索引擎(比如百度,  谷歌,  必应)
    2.站内全文检索引擎(淘宝, 京东搜索功能)
    3.优化数据库查询(因为数据库中使用like关键字是全表扫描也就是顺序扫描算法,查询慢)


   Lucene实现全文检索的流程

   


  需要我们注意的是在索引库中存储了两部分内容:索引和原始文档的内容


  1、获得原始文档

   原始文档是指要索引和搜索的内容。原始内容包括互联网上的网页。数据库中的数据。磁盘上的文件等,我们获取的过程就是一个流的操作

 2、 创建文档对象

   获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档(Document),文档中包含一个一个的域(field),域中存储内容。这里我们可以将磁盘上的一个文件当成一个document,Document中包括一些Field(file_name 文件名称  file_path  文件路径 file_size 文件大小  file_content 文件内容)如下图:

              

   注意:对于field的要求应该和数据库中的定义区分  不同的Document可以有不同的Field。同一个Document可以有相同的Field(域名和域值都相同),每个文档都有一个唯一的编号,就是文档id,文档的id增长方式为自增长,每次加一,从零开始。

  3、分析文档

  将原始文档创建为包含域的文档,需要在对域中的内容进行分析,分析的过程是经过对原始文档提取单词,将字母转换为小写,取出标点符号,取出停用词等过程生成最终语汇单元,可以将语汇单元理解为一个一个的单词。

  每个单词叫做一个term,不同域中拆分出来的相同的单词是不同的term,term中包含两部分 一部分是文档的域名,另一部分是单词的内容。

  4、创建索引

   对所有的文档分析得出的语汇单元进行索引,索引的目的是为了搜索,最终实现只搜索被索引的语汇单元从而找到文档。大致过程如下:

  

   倒排索引

  

   查询索引

   查询索引也是搜索的过程。搜索就是用户输入关键字,从索引(index)中进行搜索的过程,根据关键字搜索索引。根据索引找到对应的文档,从而找到要搜索的内容。


   小结

  本文对lucene进行了简单的介绍,总结了整体的检索流程,让我们对全文搜索中涉及到的一些基本概念有了一定的了解,在下面一篇博客中,我们会详细介绍域的概念,因为这个概念是我们经常使用的,希望能给读者一些收获


 



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

g-Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值