日期:2014-05-17  浏览次数:20743 次

使用 Apache Lucene 搜索文本(转)

简介

Lucene 是一个开源、高度可扩展的搜索引擎库,可以从 Apache Software Foundation 获取。您可以将 Lucene 用于商业和开源应用程序。Lucene 强大的 API 主要关注文本索引和搜索。它可以用于为各种应用程序构建搜索功能,比如电子邮件客户端、邮件列表、Web 搜索、数据库搜索等等。Wikipedia、TheServerSide、jGuru 和 LinkedIn 等网站都使用了 Lucene。

Lucene 还为 Eclipse IDE、Nutch(著名的开源 Web 搜索引擎)以及 IBM?、AOL 和 Hewlett-Packard 等公司提供搜索功能。Lucene 已经兼容许多其他编程语言,包括 Perl、Python、C++ 和 .NET。到 2009 年 7 月 30 日止,用于 Java? 编程语言的最新版 Lucene 为 V2.4.1。

Lucene 功能众多:

  • 拥有强大、准确、有效的搜索算法。
  • 计算每个文档匹配给定查询的分数,并根据分数返回最相关的文档。
  • 支持许多强大的查询类型,比如 PhraseQuery、WildcardQuery、RangeQuery、FuzzyQuery、BooleanQuery 等。
  • 支持解析人们输入的丰富查询表达式。
  • 允许用户使用定制排序、过滤和查询表达式解析扩展搜索行为。
  • 使用基于文件的锁定机制保护并发索引修改。
  • 允许同时搜索和编制索引。

使用 Lucene 构建应用程序

如图 1 所示,使用 Lucene 构建功能全面的搜索应用程序主要涉及编制数据索引、搜索数据和显示搜索结果几个方面。


图 1. 使用 Lucene 构建应用程序的步骤
使用 Lucene 构建应用程序的步骤?

本文从使用 Lucene V2.4.1 和 Java 技术开发的样例应用程序中挑选了一些代码片段。示例应用程序为存储在属性文件中一组电子邮件文档编制索引,并展示了如何使用 Lucene 的查询 API 搜索索引。该示例还让您熟悉基本的索引操作。

为数据编制索引

Lucene 允许您为任何文本格式的数据编制索引。Lucene 可以用于几乎任何数据源以及从中提取的文本信息。您可以使用 Lucene 编制索引并搜索 HTML 文档、Microsoft? Word 文档、PDF 文件中存储的数据。