`
q_wong
  • 浏览: 109988 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Lucene Paoding Demo

阅读更多

/**
 * 
 * @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)

    【Lucene Demo (Paoding)】是一个展示如何在Java环境中使用Apache Lucene库进行全文搜索引擎构建的示例项目。Lucene是开源的全文检索引擎库,它提供了强大的文本搜索功能,而Paoding则是针对中文处理的插件,优化了...

    Paoding中文分词

    4. “lucene”:这是一个开源全文检索库,表明“Paoding中文分词”可能与Lucene有集成或兼容性,可以用于提高搜索和索引效率。 **压缩包子文件的文件名称列表解析** 1. `analyzer.bat` 和 `analyzer.sh`:这两个...

    lucenedome

    在"lucenedemo"这个示例中,开发者利用Lucene和Paoding构建了一个演示程序,能够对测试文本、文件甚至数据库进行索引。具体操作可能包括以下步骤: 1. **文本预处理**:使用Paoding进行中文分词,将原始文本转化为...

    Solr+Paodng中文搜索引擎__Demo

    Solr+Paoding中文搜索引擎Demo是一个综合性的项目,旨在展示如何结合Apache Solr与Paoding中文分词器来构建一个高效、精准的中文搜索引擎。Apache Solr是一个流行的开源全文搜索服务器,而Paoding中文分词器是专为...

    Solr3.2 + mmseg4j-1.8.4中文搜索引擎_Demo

    在"Solr3.2+mmseg4j-1.8.4中文搜索引擎 demo"项目中,`paoding-analysis.jar`是包含mmseg4j分析器的Java库文件,它提供了与Solr交互的接口,使得Solr能够使用mmseg4j进行中文分词。`readme.txt`通常包含了关于如何...

    solr安装配置

    Solr 是一个基于 Lucene 的开源搜索引擎,提供了一个分布式、可扩展、易用且功能强大的全文检索服务。本文将详细介绍如何在本地环境中安装和配置 Solr。 首先,我们需要准备的环境是 JDK 和 Tomcat。Solr 建立在 ...

Global site tag (gtag.js) - Google Analytics