• 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();
        }
    }

    以上。

  • 相关阅读:
    面向对象一
    模块二:os模块、sys模块、json模块、pickle模块,包
    模块一:时间模块、random模块、hashlib模块、日志模块
    异常处理、迭代器、推导式、生成器
    有参装饰器
    匿名函数、高阶函数
    装饰器
    函数对象、函数嵌套、闭包函数
    名称空间与作用域
    day17 django 相关
  • 原文地址:https://www.cnblogs.com/llzx373/p/2341504.html
Copyright © 2020-2023  润新知