zoukankan      html  css  js  c++  java
  • 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对象中去,并加入到集合中保存,以备将之用

  • 相关阅读:
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    8.4 确定两个日期之间的月份数或年数
    (Java实现) 洛谷 P1553 数字反转(升级版)
  • 原文地址:https://www.cnblogs.com/loaderman/p/10059103.html
Copyright © 2011-2022 走看看