论坛首页 入门技术论坛

lucene 漫谈--入门与介绍(1)

浏览 1791 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-25  
1 lucene简介

        1.1 什么是lucene

        Apache Lucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。    

        Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。
       

        1.2 lucene能做什么
        要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里。知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了。你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为“%like%”而锁表了;你也可以写个自己的搜索引擎……

        1.3 你该不该选择lucene
        下面给出一些测试数据,如果你觉得可以接受,那么可以选择。
        测试一:250万记录,300M左右文本,生成索引380M左右,800线程下平均处理时间300ms。
        测试二:37000记录,索引数据库中的两个varchar字段,索引文件2.6M,800线程下平均处理时间1.5ms。


2 lucene的工作方式
      
         lucene提供的服务实际包含两部分:一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源。

        2.1写入流程
        源字符串首先经过analyzer处理,包括:分词,分成一个个单词;去除stopword(可选)。
        将源中需要的信息加入Document的各个Field中,并把需要索引的Field索引起来,把需要存储的Field存储起来。
        将索引写入存储器,存储器可以是内存或磁盘。

        2.2读出流程
        用户提供搜索关键词,经过analyzer处理。
        对处理后的关键词搜索索引找出对应的Document。
        用户根据需要从找到的Document中提取需要的Field。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics