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对象中去,并加入到集合中保存,以备将之用

  • 相关阅读:
    在线教程的游戏化-20分钟做了个demo
    (转)内江师院网络专业大二学子实习快报
    学云网线下国信安教育走进川师大
    Ruby on Rails框架开发学习
    Unity3D编程学习分享
    后高考时代规划专家推荐 学云网“学历技能就业”
    Tomcat调优及JMX监控
    XenServer pool 移除server 设置master
    计算程序总行数的Python代码
    SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志
  • 原文地址:https://www.cnblogs.com/loaderman/p/10059103.html
Copyright © 2011-2022 走看看