`

lucene 2.0中的一些要注意的地方

阅读更多

lucene是一款不错的针对搞全文搜索的API,可以结合JAVA使用,但在用lucene 2.0时,如果参考目前的一些文章,可能会有一些API是过期了,我在看一些讲lucene的文章时,就遇到这类的情况,于是经过查找,发现有如下的一些要注意的地方。
Field.Text(java.lang.String, java.io.Reader)

new Field(java.lang.String, java.io.Reader)代替

Field.Keyword(java.lang.String, java.lang.String)

Field.Keyword(java.lang.String, java.lang.String)
代替

Query query = QueryParser.parse(q, "contents", new StandardAnalyzer ());

QueryParser parser = new QueryParser("contents", new StandardAnalyzer ());
Query query = parser.parse(q);

代替

因此,再摘录一个命令行方式下的简单lucene程序,来自IBM DW,效果是先对某目录下的TXT文件建立索引,然后再排序
建立索引的程序:

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.util.Date;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;

 

/**
 * This class demonstrate the process of creating index with Lucene
 * for text files
 */
public class TxtFileIndexer {
 public static void main(String[] args) throws Exception{
  //indexDir is the directory that hosts Lucene's index files
        File   indexDir = new File("D:\\luceneIndex");
        //dataDir is the directory that hosts the text files that to be indexed
        File   dataDir  = new File("D:\\luceneData");
        Analyzer luceneAnalyzer = new StandardAnalyzer();
        File[] dataFiles  = dataDir.listFiles();
        IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
        long startTime = new Date().getTime();
        for(int i = 0; i < dataFiles.length; i++){
         if(dataFiles[i].isFile() && dataFiles[i].getName().endsWith(".txt")){
          System.out.println("Indexing file " + dataFiles[i].getCanonicalPath());
          Document document = new Document();
          Reader txtReader = new FileReader(dataFiles[i]);
          

          document.add(new Field("path",dataFiles[i].getPath(),Field.Store.YES,Field.Index.NO));
          document.add(new Field("contents",txtReader));
         
          indexWriter.addDocument(document);
         }
        }
        indexWriter.optimize();
        indexWriter.close();
        long endTime = new Date().getTime();
       
        System.out.println("It takes " + (endTime - startTime)
                           + " milliseconds to create index for the files in directory "
                     + dataDir.getPath());       
 }
}

搜索的程序
import java.io.File;

import org.apache.lucene.document.Document;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.FSDirectory;

/**
 * This class is used to demonstrate the
 * process of searching on an existing
 * Lucene index
 *
 */
public class TxtFileSearcher {
 public static void main(String[] args) throws Exception{
     String queryStr = "我";
     //This is the directory that hosts the Lucene index
        File indexDir = new File("D:\\luceneIndex");
        FSDirectory directory = FSDirectory.getDirectory(indexDir,false);
        IndexSearcher searcher = new IndexSearcher(directory);
        if(!indexDir.exists()){
         System.out.println("The Lucene index is not exist");
         return;
        }
        Term term = new Term("contents",queryStr.toLowerCase());
        TermQuery luceneQuery = new TermQuery(term);
        Hits hits = searcher.search(luceneQuery);
        System.out.println("his result is"+hits.length());
        for(int i = 0; i < hits.length(); i++){
         Document document = hits.doc(i);
         System.out.println("File: " + document.get("path"));
        }
 }
}

 

分享到:
评论

相关推荐

    lucene2.0与其分词工具包

    然而,随着时间的推移,Lucene已经发展到更高的版本,如现在的Lucene 8.x,但在一些特定的场景或对老版本有依赖的项目中,Lucene 2.0依然具有其独特的价值。 Lucene 2.0的核心特性包括文档索引、查询解析、评分机制...

    lucene 2.0 api以及lucene 3.0 api

    **Lucene 2.0 API 和 Lucene 3.0 API 深度解析** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它为开发者提供了在 Java 应用程序中实现高性能、可扩展的全文搜索功能的能力。Lucene 的 API 设计得相当...

    开发自己的搜索引擎《lucene2.0+heritrix》一书对应的源码资料

    在Lucene 2.0版本中,主要包含以下核心功能: 1. **分词**: Lucene支持对文本进行分词,将大段文本分解成关键词,这是全文搜索的基础。 2. **索引**: 创建倒排索引,使得能快速定位到包含特定关键词的文档。 3. **...

    lucene2.0+Heritrix配套源码

    《lucene2.0+Heritrix配套源码》是一个针对搜索引擎开发的资源包,包含了构建自定义搜索引擎所需的关键组件。Lucene是一个流行的全文搜索引擎库,而Heritrix则是一个强大的网页抓取工具,用于收集互联网上的数据。这...

    开发自己的搜索引擎Lucene2.0+Heritrix

    以下是 Lucene 2.0 盈亏平衡点前后的一些关键版本: - **2.3.0**(2008 年 1 月):这是一个重要版本,引入了许多新特性。 - **2.4.0**(2008 年 10 月):继续优化并增加了新功能。 - **2.4.1**(2009 年 5 月):...

    Lucene.2.0.API

    在Lucene 2.0中,主要的知识点包括以下几个核心模块: 1. **索引模块**:这是Lucene的基础,用于构建和管理全文索引。主要包括`IndexWriter`类,用于创建、更新和删除索引;`Analyzer`类,用于文本分析,将输入的...

    Lucene2.0+Heritrix(源代码)

    首先,我们要了解Lucene2.0和Heritrix的基本概念和功能。 Lucene2.0是Apache软件基金会的一个项目,它是一个高性能、全文检索库,提供了一个简单的API,允许开发者将全文搜索功能集成到他们的应用中。Lucene的核心...

    lucene-2.0

    Lucene 2.0是一款强大的开源全文检索库,由Apache软件基金会开发并维护,是Java编程语言中的一个核心工具,广泛应用于搜索引擎的构建和其他信息检索场景。该版本发布于2006年,虽然现在已经有了更新的版本,但Lucene...

    Lucene 2.0+Heriterx书源代码-ch7lib

    《深入理解Lucene 2.0与Heritrix:源码剖析》是一本关于搜索引擎开发的经典著作,书中详细讲解了如何使用Lucene 2.0和Heritrix这两个开源工具进行信息检索。在这个名为"Lucene 2.0+Heriterx书源代码-ch7lib"的压缩包...

    Lucene-2.0学习文档

    《深入理解Lucene-2.0:从源码到应用》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。它为Java开发者提供了强大的文本搜索功能,广泛应用于各种信息检索系统中。本篇文章将围绕"Lucene-2.0学习...

    《开发自己的搜索引擎-Lucene 2.0 Heritrix》cd(全)(下载地址)

    Lucene 2.0是该系列中的一个重要版本,相比早期版本,在性能和功能上都有显著提升。 #### 1.1 Lucene 2.0的特点 - **高效性**:通过优化的数据结构和技术实现,Lucene 2.0能够快速地索引和检索大量数据。 - **可...

    lucene2.0+heritrix 随书光盘

    《lucene2.0+heritrix 随书光盘》是针对搜索引擎技术的一个资源集合,其中包含了Lucene 2.0和Heritrix的相关示例及教程。Lucene是一款强大的全文检索库,而Heritrix则是一个互联网爬虫工具,它们在构建搜索引擎时起...

    Lucene2.0+Heritrix搜索引擎 随书光盘

    《Lucene2.0+Heritrix搜索引擎》随书光盘包含了两个重要的开源搜索技术——Apache Lucene 2.0和Heritrix的资源和教程。Lucene是Java开发的全文检索库,而Heritrix则是一个网络爬虫工具,它们在构建大规模搜索引擎和...

    重要lucene2.0 学习文档

    在 Lucene 2.0 版本中,相比于之前的 1.4.3 版本,有很多改进和优化,但同时也存在向后兼容性问题。2006 年 6 月 1 日发布的 Lucene 2.0,其下载地址是 http://apache.justdn.org/lucene/java/。 下面通过两个示例...

    lucene 2.0开发包

    lucene 2.0虽然是比较老的技术,它对实时搜索支持交差,不过很多普通的搜索引擎对实时性要求并不是很高,并且对于分词上没有太多的个性化专业要求,那么这个选择将是非常好的,提供各类分词接口、存储接口、索引接口...

    Lucene2.0实例

    但作为入门实例,这个"Lucene2.0实例"应该会从最基本的层面教你如何启动并运行一个简单的搜索应用。通过学习并实践这些基础操作,你可以逐步掌握Lucene的核心功能,为进一步深入学习和开发更复杂的搜索系统奠定基础...

    Lucene2.0+Heritrix(ch4源代码)

    本篇将结合Lucene 2.0与Heritrix的源代码,探讨这两者的协同工作原理及其在实际应用中的知识要点。 一、Lucene 2.0核心概念与技术 1.1 分词器(Tokenizer)与过滤器(Filter) Lucene首先通过分词器将输入文本切割...

    Lucene.net 2.0 API + DLL 下载

    Lucene.NET 2.0 API是这个开源项目的特定版本,它在.NET平台上实现了Lucene的功能,让.NET开发者可以轻松地在应用程序中集成强大的搜索引擎。 Lucene.NET的核心功能包括: 1. **索引创建与更新**:Lucene.NET允许...

    Lucene2.0+Nutch0.8 API帮助文档(CHM格式)

    在《Lucene2.0+Nutch0.8 API帮助文档》中,你可以找到以下主要知识点: 1. **Lucene API**:包括如何创建索引、如何添加、删除和更新文档、如何构建查询对象、执行查询以及解析结果等。此外,还有关于分析器...

    Lucene.Net 2.0 源码+文档

    这个资料包包含了Lucene.Net 2.0的源码和相关文档,对于想要深入了解和定制全文检索功能的开发者来说,是极其宝贵的资源。 首先,让我们来探讨一下Lucene.Net的核心概念和主要功能: 1. **全文检索**: Lucene.Net...

Global site tag (gtag.js) - Google Analytics