/**
*
* @author Q.Wong [2010-12-17]
*
*/
public class TestInvoker {
private Logger logger = LogManager.getLogger(TestInvoker.class);
/**
* 索引保存在磁盘目录
*/
@Test
public void testFSDirectory() {
String indexDir = "d:\\temp\\index";
String sourceDir = "d:\\temp\\TestLucene";
String field = "contents";
String keyWord = "河蟹";
Analyzer analyzer = new PaodingAnalyzer();
try {
/** Index **/
IndexWriter writer = IndexManager.getFSDirectoryIndexWriter(
indexDir, analyzer);
long l1 = System.currentTimeMillis();
IndexManager.indexDocs(new File(sourceDir), writer, true);
long l2 = System.currentTimeMillis();
logger.info("Indexed " + writer.numDocs() + " files in ["
+ (l2 - l1) + "] milliseconds.");
writer.optimize();
writer.close();
/** Query **/
IndexReader reader = IndexManager
.getFSDirectoryIndexReader(indexDir);
Searcher searcher = new IndexSearcher(reader);
long l3 = System.currentTimeMillis();
TopDocs resultDocs = QueryManager.doQuery(analyzer, searcher, field, keyWord, 10);
long l4 = System.currentTimeMillis();
logger.info("Found " + resultDocs.totalHits
+ " document(s) matched query '" + keyWord + "' in ["
+ (l4 - l3) + "] milliseconds.");
searcher.close();
reader.close();
QueryManager.resolvedResults(resultDocs, searcher);
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 索引保存在内存
* 查询并高亮关键字
*/
@Test
public void testRAMDirectory() {
String sourceDir = "d:\\temp\\TestLucene\\text.txt";
Directory ramDir = new RAMDirectory();
Analyzer analyzer = new PaodingAnalyzer();
try {
/** Index **/
IndexWriter writer = IndexManager.getRamDirIndexWriter(ramDir,
analyzer);
long l1 = System.currentTimeMillis();
IndexManager.indexDocs(new File(sourceDir), writer, true);
long l2 = System.currentTimeMillis();
logger.info("Indexed " + writer.numDocs() + " files in ["
+ (l2 - l1) + "] milliseconds.");
writer.optimize();
writer.close();
/** Query **/
IndexReader reader = IndexManager.getRamDirIndexReader(ramDir);
QueryManager.doQuery(analyzer, reader, "contents", "河蟹", 10);
reader.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (InvalidTokenOffsetsException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
【Lucene Demo (Paoding)】是一个展示如何在Java环境中使用Apache Lucene库进行全文搜索引擎构建的示例项目。Lucene是开源的全文检索引擎库,它提供了强大的文本搜索功能,而Paoding则是针对中文处理的插件,优化了...
4. “lucene”:这是一个开源全文检索库,表明“Paoding中文分词”可能与Lucene有集成或兼容性,可以用于提高搜索和索引效率。 **压缩包子文件的文件名称列表解析** 1. `analyzer.bat` 和 `analyzer.sh`:这两个...
在"lucenedemo"这个示例中,开发者利用Lucene和Paoding构建了一个演示程序,能够对测试文本、文件甚至数据库进行索引。具体操作可能包括以下步骤: 1. **文本预处理**:使用Paoding进行中文分词,将原始文本转化为...
Solr+Paoding中文搜索引擎Demo是一个综合性的项目,旨在展示如何结合Apache Solr与Paoding中文分词器来构建一个高效、精准的中文搜索引擎。Apache Solr是一个流行的开源全文搜索服务器,而Paoding中文分词器是专为...
在"Solr3.2+mmseg4j-1.8.4中文搜索引擎 demo"项目中,`paoding-analysis.jar`是包含mmseg4j分析器的Java库文件,它提供了与Solr交互的接口,使得Solr能够使用mmseg4j进行中文分词。`readme.txt`通常包含了关于如何...
Solr 是一个基于 Lucene 的开源搜索引擎,提供了一个分布式、可扩展、易用且功能强大的全文检索服务。本文将详细介绍如何在本地环境中安装和配置 Solr。 首先,我们需要准备的环境是 JDK 和 Tomcat。Solr 建立在 ...