`
javaeyes
  • 浏览: 30004 次
  • 来自: ...
社区版块
存档分类
最新评论

用Lucene构造简单搜索!

阅读更多
   Lucene是一个开源世界里最有名的搜索引擎包,关于它的介绍现在网络上也有很多了,特别是车东的文章http://www.chedong.com/tech/lucene.html,网上流传至广。现在还有一本《Lucene In Action》的电子书是详细介绍的Lucene,可以down下来看。今天先来对硬盘文件实现简单的索引和搜索功能。
  
用Lucene建立索引步骤:
    [1]指定索引源文件夹(dataDir)和索引的文件夹(IndexDir);

    [2]构造一个IndexWriter:IndexWriter构造器有三个参数,其中第一个参数可以是Lucene内建的类Directory,也可以是File类型的文件夹路径,还可以是String类型的文件夹路径。第二个参数为语法分析器Analyzer,Lucene自带了几个分析器的,但是对中文支持都不是很好,我在网上找了两个,效果还不错。待会将放下面供大家下载。这个参数的指定,比如我用自己的CWordAnalyzer可以直接用new CWordAnalyzer()。最后一个参数是要注意的,Lucene Api解释为“true to create the index or overwrite the existing one; false to append to the existing index”,就是说在这里设定是否增量增加索引,在开发的时候得考虑了,设true将导致每次索引都删除原索引重建,但是如果原来不存在索引而设置为false也将导致lucene抛出找不到指定文件的错误。

[list][3]构造Document,通过add方法加入字段: 
		
		Document doc = new Document();
		doc.add(Field.Text("contens",new FileReader(f)));
		doc.add(Field.UnIndexed("filename",f.getCanonicalPath()));
其中Feild方法有很多种,可以去车东的文章查看详细。f为dataDir文件夹中的文本文件。[/list]
    [4]IndexWriter通过addDocument(doc)加入document对象,此时lucene将启动分词器对Document对象进行分词索引;

    [5]调用IndexWriter的optimize方法对索引进行优化,因为在索引过程中难免产生文件碎屑,该方法对文件进行优化可以提高检索效率;

    [6]关闭IndexWriter:IndexWriter.close()。

到此索引建好了,开始搜索部分。
用Lucene进行搜索:
    [1]创建IndexSearcher实例,其构造方法有三个,单参数,可以用String形式的索引文件夹路径;

[list][2]创建Query :
Query query = QueryParser.parse(q,"contents",new Analyzer());

其中q为查询字符串,“contents”为查询字段。
[list][3]搜索:
Hits hits = indexwriter.search(query)

hits由Document类型组成。可以通过hits.doc(i)获取具体的Document对象[/list]
可以看到用lucene进行索引和搜索都很简单。






  • je-analysis.rar (877.9 KB)
  • 描述: 极易分词,analyzer是MMAnalyzer
  • 下载次数: 472
  • segment.rar (1.7 MB)
  • 描述: 来自台湾的分词,analyzer为CWordAnalyzer
  • 下载次数: 564
分享到:
评论
3 楼 javaeyes 2007-01-28  
两个分词都自带词典,第一个速度快,但是效果没有第二个好
2 楼 hintcnuie 2007-01-25  
上面这两个分词那个好些?
1 楼 非飞 2007-01-10  
能不能简单的说说两个分词程序。。。

相关推荐

    Lucene全文搜索_LuceneJava全文搜索_

    总之,Lucene作为Java全文搜索的基石,提供了强大的功能和灵活性,可以帮助开发者构建高效、精准的搜索功能,无论是简单的关键词搜索还是复杂的模糊和智能查询,都能游刃有余地应对。结合"用户管理手册.docx"的学习...

    基于lucene 的简单搜索引擎.rar

    **基于Lucene的简单搜索引擎构建详解** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索库,提供了一个强大的信息检索引擎框架。这个压缩包“基于lucene 的简单搜索引擎.rar”很可能是为了...

    使用Lucene.net进行全文搜索

    压缩包中的`SampleLuceneNet`可能包含一个简单的示例,演示了如何使用Lucene.NET创建索引、执行搜索以及处理结果。通过阅读和运行这个示例,你可以更直观地了解上述概念的实现。 总结来说,Lucene.NET为.NET开发者...

    Lucene使用代码实例之搜索文档

    以下是一个简单的示例代码,演示了如何使用Lucene搜索包含关键词"lucene"的文档: ```java public class TxtFileSearcher { public static void main(String[] args) throws Exception{ String queryStr = ...

    最简单的Lucene建立、搜索索引的方法

    **Lucene简介** Lucene是Apache软件基金会的一个开放源代码项目,它是一个高性能、全文本检索库,...通过上述步骤,你可以在MyEclipse10环境下使用Lucene快速建立和搜索索引,为你的应用程序添加强大的全文检索功能。

    用lucene对数据库建立索引及搜索

    使用 Lucene.net 建立简单的数据库搜索程序 <!-- ... --> <td>  <asp:textbox id="tj" runat="server"></asp:textbox> 搜索"> <!-- ... --> ``` 对应的`aspx.cs`后台代码中,你...

    lucene 网页抓取,模拟搜索引擎

    在本项目中,我们将探讨如何利用Lucene来实现一个简单的网页抓取和搜索引擎。 **1. 网页抓取** 网页抓取是搜索引擎的第一步,它涉及到从互联网上获取信息。在Lucene项目中,通常会使用像Jsoup或HtmlUnit这样的第三...

    lucene3.0.3搜索的使用示例

    从"lucene3.0.3搜索的使用示例"中,你将学习如何编写代码来完成这些任务,包括索引创建、查询构造、搜索执行以及结果处理等。 在压缩包中的示例代码通常会涵盖这些概念,通过实际运行和调试这些代码,你可以深入...

    用Lucene实现Java里面的搜索引擎

    在提供的压缩包"LuceneOldSearch"中,可能包含了使用旧版本Lucene实现的一个简单的搜索引擎示例。这个示例可能涵盖了从建立索引到执行查询的完整流程,以及如何处理文本数据和错误检查。学习这个示例能帮助开发者更...

    全文检索原理及Lucene实之搜索

    Lucene是一个高效且可扩展的全文检索库,它的核心优势在于提供了强大的索引和搜索功能,并且完全使用Java实现,便于集成到Java应用程序中。Lucene适用于纯文本文件的索引和搜索,但需要注意的是,它并不涉及从其他...

    Lucene简单Demo(附带Jar)

    **Lucene的简单使用流程** 1. **创建Analyzer**: 根据需求选择或自定义分析器,例如使用StandardAnalyzer处理英文文本。 2. **创建Document**: 定义要索引的字段和内容,例如`document.add(new TextField("content...

    Lucene索引搜索简介以及入门实例源码.rar

    这个压缩包中的源码很可能是演示了如何构建和使用Lucene索引进行搜索的简单实例,对于初学者来说是一份很好的学习资料。通过阅读源码,你可以了解如何实际操作Lucene,从而加深对Lucene的理解。同时,实践是最好的...

    Lucene简单实例记录

    从给定的文件信息中,我们可以提取出关于Apache Lucene的基本使用...通过以上解析,我们可以看出Lucene的强大功能及其在文本搜索领域的重要地位,同时,也强调了在实际应用中注意版本兼容性和合理使用分析器的重要性。

    Lucene搜索实例

    在这个搜索实例中,我们将探讨 Lucene 的基本使用和核心概念。 **一、Lucene 的基本架构** Lucene 的核心组件包括索引(Index)、文档(Document)、字段(Field)和查询(Query)。首先,我们需要将数据转化为 ...

    第一个lucene的简单实例....

    4. **查询解析**:用户输入的搜索字符串会被转换成Lucene的查询对象,这可能涉及使用`QueryParser`或其他查询构造工具。 5. **搜索执行**:使用`IndexSearcher`来执行查询,找到与查询匹配的文档。结果通常包含匹配...

    简单的lucene demo

    这个“简单的lucene demo”旨在向我们展示如何利用Lucene进行基础的文本索引和搜索操作。 **描述:“全文索引工具,开源工具,java编写,lucene的简单demo”** 1. **全文索引工具**:Lucene的核心功能是构建全文...

    Lucene.Net的DLL

    **正文** 标题提到的"Lucene.Net的DLL"是指基于.NET平台的全文搜索引擎库——Lucene.Net。这个库是Apache Lucene项目的一个移植...无论是简单的网站搜索还是复杂的商业智能应用,Lucene.Net都能成为强大而可靠的工具。

    Lucene的的学习资料及案例

    Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单的API,使得开发者能够方便地在应用中实现全文检索功能。本篇文章将围绕Lucene的核心概念...

    lucene的jar包,欢迎下载

    【标题】"lucene的jar包,欢迎下载"所涉及的知识点主要集中在Lucene这个开源全文搜索引擎库上。Lucene是Apache软件基金会的顶级项目,它是一个高性能、全文本搜索库,提供了完整的搜索功能,包括索引、查询、排序等...

Global site tag (gtag.js) - Google Analytics