lucene简单应用
package com.pdsu.lucene;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
/**
* 类说明:
*
* @author 作者: LiuJunGuang
* @version 创建时间:2011-12-29 下午04:42:21
*/
public class Lucene {
@Test
public void insert() throws IOException {
Article article = new Article(1, "lucene is very good!",
"lucene very good!,lucene very good!");
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);// 分词器
Directory dir = FSDirectory.open(new File("./store")); // 数据存储目录
IndexWriter index = new IndexWriter(dir, analyzer,
MaxFieldLength.LIMITED);
Document document = new Document();// 文档对象
Field idField = new Field("id", String.valueOf(article.getId()), Store.YES, Index.NOT_ANALYZED);
Field titleField = new Field("title", article.getTitle(), Store.YES, Index.ANALYZED);
Field contentField = new Field("content", article.getContent(), Store.YES, Index.NOT_ANALYZED);
document.add(idField);
document.add(titleField);
document.add(contentField);
index.addDocument(document);// 添加文档对象
index.close();
}
@Test
public void query() throws Exception{
Directory dir = FSDirectory.open(new File("./store")); // 数据存储目录
IndexSearcher indexSearcher = new IndexSearcher(dir);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);// 分词器
QueryParser qp = new QueryParser(Version.LUCENE_30, "title", analyzer);
Query query = qp.parse("lucene");
TopDocs tops = indexSearcher.search(query, 10);
//获得记录总条数
int count = tops.totalHits;
ScoreDoc []scoreDocs = tops.scoreDocs;//得到目录
List<Article> articles = new ArrayList<Article>();
for (int i = 0; i < scoreDocs.length; i++) {
float score = scoreDocs[i].score;//相关度得分
int doc = scoreDocs[i].doc;
Document document = indexSearcher.doc(doc);
Article article = new Article(Integer.parseInt(document.get("id")), document.get("title"),document.get("content"));
articles.add(article);
}
System.out.println(articles);
}
}