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简单使用的主要内容,如果未能解决你的问题,请参考以下文章