首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

lucene 施用

2012-10-25 
lucene 应用lucene 应用lucenedto 类 用于区分??增加索引:储存文件?File indexFile new File(indexDirPa

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));

?

热点排行