Lucene简单使用

Posted JavaReference

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene简单使用相关的知识,希望对你有一定的参考价值。

1、简介:Lucence是一个文本检索的引擎工具包,我们可以再项目中添加进来做些简单的文本条目搜索,但它不是一个完整的全文检索引擎,例如Solr、ElasticSearch等。


2、使用如下:

Analyzer  analyzer  = new IKAnalyzer()//这里使用IKAnalyzer分词器


IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzer );//IndexWriter的配置类,版本号和分词器设置


String indexDir= /apps/indexdir/;//索引文件的生成目录

File indexFile = new File(indexDir);

if(!indexFile.exists()){

    indexFile.mkdir();

 }

Directory directory = new MMapDirectory(indexFile);//索引文件放在内存里面,加快访问速度

IndexWriter writer = new IndexWriter(directory, config);//构造IndexWriter


//将docment文档依次添加到writer里面去

for(;;;){

 Document doc = new Document();

 doc.add(new LongField("id",xx,Field.Store.YES));//索引部分只存储id

 doc.add(new TextField("content",xx,Field.Store.NO));

 writer.addDocument(doc);

}

//到这里生成索引的步骤已经完成


//下面开始检索的步骤

File indexFile = new File(indexDir);

Directory dirctory = new MMapDirectory(indexFile);

IndexReader   reader = DirectoryReader.open(dirctory);//获取indexReader

IndexSearcher searcher = new IndexSearcher(reader);//得到IndexSearcher 


QueryParser  parser = new QueryParser(Version.LUCENE_40, "content", analyzer);//检索filed为content的parser

Query  query = parser.parse(xx);//xx是你要检索的内容

TopDocs docs = searcher.search(query, null, resultSize);//resultSize是你要检索条目的返回最大值

ScoreDoc[] hits = docs.scoreDocs;//返回结果数组,返回结果是按score分值从高到低排列的

for(int i=0;i<hits.length;i++){

     Document doc = searcher.doc(hits[i].doc);

     Integer id = Integer.parseInt(doc.get("id"));

      system.out.println(doc.get("content"));//检索出来的文本

 }

文本检索的创建和搜索到这里就结束了。

您会了吗?


以上是关于Lucene简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Lucene入门程序-Java API的简单使用

使用Lucene.Net做一个简单的搜索引擎-全文索引

Lucene全文搜索原理与使用

lucene构建restful风格的简单搜索引擎服务

Lucene 五分钟教程

Lucene三个高亮显示模块的简单示例-Highlighter