Lucene(发音为 ['lusen] )是一个非常优秀的开源的全文搜索引擎,我们可以在它的上面开发出各种全文搜索的应用来。Lucene在国外有很高的知名度,现在已经是Apache的顶级项目,在国内,Lucene的应用也越来越多。<o:p></o:p>
一.用Lucene建立索引
用lucene建立索引, Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下:
1) 以投诉内容假设有数据库中有2条记录
第1条记录的投诉内容: 为什么我在经三路上接不到电话,而且我这个月的话费很高.
第2条记录的投诉内容: 我九月份的话费怎么那么高呢
2) lucene进行全文分析.获得
第1条记录的关键字:
为什么 我 经三路 接不到 电话 我 话费 高
第2条记录的关键字:
我 九月 话费 高
3)lucene进行倒排索引.关键字在那些记录中出现过.
关键字
|
对应的记录号
|
经三路
|
1
|
九月
|
2
|
高
|
1,2
|
话费
|
1,2
|
我
|
1,2
|
以”我”为例子说明一下该结构,”我”在第1条记录中存在,在第2条记录中也存在.也就是说当用户输入关键字”我”的时候可以查找到第1条记录和第2条记录.
通常仅知道关键词在哪些文章中出现还不够,我们还需要知道关键词在文章中出现次数和出现的位置,通常有两种位置:a)字符位置,即记录该词是文章中第几个字符(优点是关键词亮显时定位快);b)关键词位置,即记录该词是文章中第几个关键词(优点是节约索引空间、词组(phase)查询快),lucene中记录的就是这种位置。
加上“出现频率”和“出现位置”信息后,我们的索引结构变为:
关键字
|
对应的记录号
|
[出现频率]
|
出现位置
|
经三路
|
1
|
[2]
|
2,6
|
九月
|
2
|
[1]
|
2
|
高
|
1
|
[1]
|
8
|
<o:p> </o:p>
|
2
|
[1]
|
4
|
话费
|
1
|
[1]
|
7
|
<o:p> </o:p>
|
2
|
[1]
|
3
|
我
|
1
|
[2]
|
2,6
|
<o:p> </o:p>
|
2
|
[1]
|
1
|
以我为例子说明该结构,”我”在记录1中出项[2]次,位置在2,6,在记录2中出现[1]次位置在1.
<o:p> </o:p>
lucene将上面三列分别作为词典文件(Term Dictionary)、频率文件(frequencies)、位置文件 (positions)保存。其中词典文件不仅保存有每个关键词,还保留了指向频率文件和位置文件的指针,通过指针可以找到该关键字的频率信息和位置信息。为了减小索引文件的大小,Lucene对索引还使用了压缩技术。
下面我们可以通过对该索引的查询来解释一下为什么要建立索引。
假设要查询单词 “话费”,lucene先对词典二元查找、找到该词,通过指向频率文件的指针读出所有文章号,然后返回结果。词典通常非常小,因而,整个过程的时间是毫秒级的。
而用普通的顺序匹配算法,不建索引,而是对所有文章的内容进行字符串匹配,这个过程将会相当缓慢,当文章数目很大时,时间往往是无法忍受的。
4)当用户输入 [我],就可以搜索到第1条记录和第2条记录.输入[经三路]可以搜索到第1条记录.输入[话费]可以搜索到第1条记录和第2条记录.
以上是lucene的用法.
分享到:
相关推荐
**基于Java的Lucene全文搜索引擎资源简单实例** Lucene是一个由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。Lucene是高性能、可扩展的信息检索库,可以集成到各种Java应用中,...
与传统基于SQL数据库的搜索引擎相比,基于Lucene的搜索引擎在处理大规模数据集时,特别是在需要全文检索和模糊搜索的情况下,更加高效。文章中的新闻搜索引擎通过使用Lucene的API,相比普通搜索引擎,提高了搜索的...
本系统是基于lucene框架开发的全文搜索引擎,能实现txt、doc、pdf、excel、ppt等常见文档的全文检索,可以直接部署到tomcat下即可运行,需要研究lucene或实际应用lucene框架的朋友,欢迎下载。
Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询解析和结果排序等。它的设计...
**基于Lucene的搜索引擎** Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。它是Java语言实现的,可以被集成到各种应用程序中,为开发者提供了强大的文本搜索功能。在本项目中,我们看到的是一个专门...
本文将深入探讨如何使用Apache LUCENE这一强大的全文搜索引擎库,设计并实现一个高效的搜索引擎。LUCENE是一款开源的Java库,它为开发者提供了构建搜索引擎所需的核心功能,包括索引创建、文本分析、查询解析以及...
在"Lucene全文搜索_LuceneJava全文搜索_"这个主题中,我们将深入探讨Lucene如何在Java环境中实现高效的全文搜索引擎。首先,Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。...
Regain是一个基于Apache Lucene的全文搜索引擎,它提供了高级的搜索功能,能够帮助用户快速、准确地在大量数据中查找所需信息。Lucene是Java语言实现的一个开源信息检索库,为开发人员提供了一个强大的文本分析和...
在本项目中,"ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现"是一个实例,展示了如何将ASP.NET技术与Ajax(异步JavaScript和XML)和Lucene全文搜索引擎库相结合,以创建一个高效、用户友好的搜索功能。...
本篇论文旨在探讨如何运用Lucene全文搜索引擎技术,并结合Heritrix网络爬虫工具,构建一个面向高校图书馆的统一搜索引擎平台。 #### Lucene全文搜索引擎概述 Lucene是Apache软件基金会旗下的开源项目之一,它提供了...
《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...