读书人

lucene 施用

发布时间: 2012-10-25 10:58:57 作者: rapoo

lucene 应用

lucene 应用

lucenedto 类 用于区分

?

?

增加索引:

储存文件

?

File indexFile = new File(indexDirPath + "/" + entity.getUrlType());

indexFile.mkdirs();

if (!indexFile.exists()) {

try {

indexFile.createNewFile();

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

?

?

创建 Directory 

?

Directory directory = null;

directory = new SimpleFSDirectory(indexFile);

?

索引配置:IndexWriterConfig indexWriterConfig = new IndexWriterConfig(

Version.LUCENE_30, analyzer);

?

创建索引模式:CREATE,覆盖模式; APPEND,追加模式

?

?

indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE);

indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.APPEND);

?

?

始化创建器

indexWriter = new IndexWriter(directory, indexWriterConfig);

?

增加Document

Document doc = new Document();

?

doc.add(new Field("userId", entity.getUserId(), Field.Store.YES,Field.Index.NOT_ANALYZED));

doc.add(new Field("url", url, Field.Store.YES,Field.Index.ANALYZED));

doc.add(new Field("title", title, Field.Store.YES,Field.Index.ANALYZED));

?

?

写入

indexWriter.addDocument(doc);

更新

Term term = new Term("id", entity.getUserID());

indexWriter.updateDocument(term, doc);

?

关闭

indexWriter.close();

?

?

删除索引:

Directory directory;

directory = new SimpleFSDirectory(indexDir);

indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);

indexWriter = new IndexWriter(directory, indexWriterConfig);

Term term = new Term("id", entity.getUserId?());

indexWriter.deleteDocuments(term);

关闭

indexWriter.close();

?

查询检索

File indexFile = new File(indexDirPath + "/" +fileName);

打开

Directory dir = FSDirectory.open(indexFile);

IndexSearcher indexSearcher?= new IndexSearcher(dir);

indexSearcher.setSimilarity(new IKSimilarity());TopScoreDocCollector topCollector = TopScoreDocCollector.create(indexSearcher.maxDoc(), true);indexSearcher.search(query, filter, topCollector);hits = topCollector.topDocs().scoreDocs;命中数?totalHits = topCollector.getTotalHits();doc = indexSearcher.doc(hits[i].doc);
设置高亮SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter(?"<font color=\"red\">", "</font>");Highlighter highlighter = new Highlighter(simpleHtmlFormatter,?new QueryScorer(query));?TokenStream tokenStream = analyzer.tokenStream("text",?new StringReader(text));

?

读书人网 >编程

热点推荐