Lucene 3.5 测试代码

今天看Oracle的全文索引功能,突发奇想想自己写个搜索程序,在网上下到Lucene后首先当然是测试代码了,没想到网上的教程都很旧了,最新3.5版中有不少接口都废弃了,在网上找到的3.5的代码又都比较复杂,于是干脆看了几个小时文档,自己写出来一个逻辑简单的测试代码。

 

本人环境:winduws 7 sp1 64 bit,java 6u30 64 bit,eclipse 3.7.1 64 bit

 

package LiuIndex;

import java.io.IOException;

import org.apache.lucene.document.*;
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.index.*;
import org.apache.lucene.queryParser.*;
import org.apache.lucene.search.*;
import org.apache.lucene.store.*;
import org.apache.lucene.util.*;

public class Main {
   
    public static void main(String[] args) throws CorruptIndexException,
            LockObtainFailedException, IOException, ParseException {
        //创建索引优化器
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
        //创建索引文件夹,此处试验,创建为内存文件夹
        Directory directory = new RAMDirectory();
        //创建索引写入器
        IndexWriter iwriter = new IndexWriter(directory, new IndexWriterConfig(
                Version.LUCENE_35, analyzer));
        //创建Document
        Document doc = new Document();
        //创建被索引文件,此处使用文本
        String text = "This is the text to be indexed.";
        //开始创建索引
        doc.add(new Field("fieldname", text, Field.Store.YES,
                Field.Index.ANALYZED));
        iwriter.addDocument(doc);
        iwriter.close();
        //创建索引完毕,开始读取索引
        IndexReader ireader = IndexReader.open(directory);
        IndexSearcher isearcher = new IndexSearcher(ireader);
        //创建查询转换器
        QueryParser parser = new QueryParser(Version.LUCENE_35, "fieldname",
                analyzer);
        //文本转换为引擎识别代码
        Query query = parser.parse("text");
        ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs;
        System.out.println(hits.length);
        //完成查询
        for (int i = 0; i < hits.length; i++) {
            Document hitDoc = isearcher.doc(hits[i].doc);
            System.out.println(hitDoc.get("fieldname"));
        }
        isearcher.close();
        ireader.close();
        directory.close();
    }
}

 

以上。

posted on 2012-02-07 15:03  大自在真人  阅读(1310)  评论(0编辑  收藏  举报

导航