• Lucene简介


     什么是Lucene

    Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架构,提供了完整的创建索引和查询索引,以及部分文本分析的引擎,Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,Lucene在全文检索领域是一个经典的祖先,现在很多检索引擎都是在其基础上创建的,思想是相通的。

    即:Lucene是根据关健字来搜索的文本搜索工具,只能在某个网站内部搜索文本内容,不能跨网站搜索

     Lucene通常用在什么地方

    Lucece不能用在互联网搜索(即像百度那样),只能用在网站内部的文本搜索(即只能在CRM,RAX,ERP内部使用),但思想是相通的。

    参见<<Lucene用在什么地方.JPG>>

    参见<<Lucene用在服务端三层结构中的哪一层.JPG>>

     Lucene中存的什么内容

    Lucene中存的就是一系列的二进制压缩文件和一些控制文件,它们位于计算机的硬盘上,

    这些内容统称为索引库,索引库有二部份组成:

    (1)原始记录

         存入到索引库中的原始文本,例如:传智是一家IT培训机构

    (2)词汇表

         按照一定的拆分策略(即分词器)将原始记录中的每个字符拆开后,存入一个供将来搜索的表

    参见<< Lucene索引库结构与原理图.JPG>>

    为什么网站内部有些地方要用Lucene来索搜,而不全用SQL来搜索

    (1)SQL只能针对数据库表搜索,不能直接针对硬盘上的文本搜索

    (2)SQL没有相关度排名

    (3)SQL搜索结果没有关健字高亮显示

    (4)SQL需要数据库的支持,数据库本身需要内存开销较大,例如:Oracle

    (5)SQL搜索有时较慢,尤其是数据库不在本地时,超慢,例如:Oracle

     书写代码使用Lucene的流程图

    参见<<Lucene程序宏观结构.JPG>>

    参见<<Lucene索引库创建的过程.JPG>>

    参见<<Lucene索引库查询的过程.JPG>>

    创建索引库:

    1)  创建JavaBean对象

    2)  创建Docment对象

    3)  将JavaBean对象所有的属性值,均放到Document对象中去,属性名可以和JavaBean相同或不同

    4)  创建IndexWriter对象

    5)  将Document对象通过IndexWriter对象写入索引库中

    6)  关闭IndexWriter对象

    根据关键字查询索引库中的内容:

    1)  创建IndexSearcher对象

    2)  创建QueryParser对象

    3)  创建Query对象来封装关键字

    4)  用IndexSearcher对象去索引库中查询符合条件的前100条记录,不足100条记录的以实际为准

    5)  获取符合条件的编号

    6)  用indexSearcher对象去索引库中查询编号对应的Document对象

    7)  将Document对象中的所有属性取出,再封装回JavaBean对象中去,并加入到集合中保存,以备将之用

  • 相关阅读:
    VS2013 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决办法
    备份集中的数据库备份与现有的xx数据库不同”解决方法
    Couchbase 集群小实践
    EF5+MVC4系列(1) Podwerdesigner15.1设计数据库;PD中间表和EF实体模型设计器生成中间表的区别;EF5.0 表关系插入数据(一对多,多对多)
    Vue个人笔记
    [转载] HashMap的工作原理-hashcode和equals的区别
    用VS Code写C#
    MongoDB学习笔记一:MongoDB基础
    Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
    Vue学习笔记十二:vue-resource的基本使用
  • 原文地址:https://www.cnblogs.com/loaderman/p/10059103.html
Copyright © 2020-2023  润新知