`
linchers
  • 浏览: 418 次
文章分类
社区版块
存档分类
最新评论

Lunece4.2例子

阅读更多
package com.test.luncene;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

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.Store;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.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;

/**
 * @author linchers
 *
 */
public class HelloLuncene {

	/**
	 *  建立索引
	 */
	public void createIndex(){
		
		//创建IndexWriter
		IndexWriter iw = null;
		try {
			//创建Directory
			//Directory dir = new RAMDirectory();  //放到内存中
			Directory dir = FSDirectory.open(new File("D://luncene/index01")); //放到硬盘中
			//创建IndexWriter
			Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_42);
			IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_42,analyzer);

			iw = new IndexWriter(dir,iwc);
			//创建Document对象
			Document doc = null;
			//为Document对象添加Field
			File files = new File("D://luncene/simple");
			FieldType ft = new FieldType();
			//ft.setStored(true);
			ft.setIndexed(true);
			for(File file :files.listFiles())
			{
				doc = new Document();
				doc.add(new Field("content",new FileReader(file),ft));
				doc.add(new StringField("filename",file.getName(),Store.YES));
				doc.add(new StringField("path",file.getAbsolutePath(),Store.YES));
				System.out.println("filename = "+file.getName() + "  |  path =" + file.getAbsolutePath());
				iw.addDocument(doc);
			}
			//通过IndexWriter添加文档到索引中
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				iw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}
	
	/**
	 * 执行搜索
	 */
	public void searcher(){
		
		try {
			//创建Directory
			Directory dir = FSDirectory.open(new File("D://luncene/index01"));

			//创建IndexReader
			IndexReader ir = DirectoryReader.open(dir);
			
			//根据IndexReader 创建 IndexSearcher
			IndexSearcher is = new IndexSearcher(ir);
			
			//创建搜索的Query
			Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_42);

			QueryParser qp = new QueryParser(Version.LUCENE_42,"content",analyzer);
			
			Query query = qp.parse("span");
			
			//根据searcher搜索 返回TopDocs
			TopDocs topDocs = is.search(query, 10);
			
			//根据TopDoc 获取 ScoreDoc
			ScoreDoc[] docs = topDocs.scoreDocs;
			Document document = null;
			//根据searcher 和 ScoreDoc 获取具体的Document 对象
			for(ScoreDoc doc :docs){
				//根据document对象获取需要的值
				document = is.doc(doc.doc);
				System.out.println(document.get("filename")+"  ######  "+document.get("path"));
			}
		
			//关闭reader
			ir.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
	}
	
}

 测试类

import junit.framework.TestCase;

/**
 * @author linchers
 *
 */
public class HelloLunceneTest extends TestCase {


	@Test
	public void testCreateIdex() {
		HelloLuncene hl = new HelloLuncene();
		hl.createIndex();
	}
	
	@Test
	public void testSearcher(){
		HelloLuncene hl = new HelloLuncene();
		hl.searcher();
		
	}

}

 

分享到:
评论

相关推荐

    lunece 建立索引与查询示例

    **Lucene 建立索引与查询指南** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效、可扩展的搜索功能,被广泛应用于各种项目和产品中。本指南将详细介绍如何使用 Lucene 创建索引以及...

    lunece全文检索C#

    【lucene.net 全文检索】Lucene 是一个高性能、可扩展的信息检索库,它提供了强大的文本搜索功能。在.NET环境中,我们通常使用Lucene.Net,这是一个针对.NET Framework的移植版本。本文主要介绍如何在C#中使用Lucene...

    lunece入门之HelloWorld

    《Lucene入门之HelloWorld》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,用于在各种应用中实现文本的索引和搜索。这篇博文将带你走进Lucene的世界,通过...

    lunece_search_3.0.zip_lunece+es

    在"Lunece_search"的压缩包文件中,很可能包含了实现上述步骤的代码示例或者教程。通过阅读和实践这些示例,我们可以更好地理解和掌握Lunecy+ES在实际项目中的应用。 总的来说,Lunecy+ES的组合为开发者提供了一套...

    lunece

    倒排索引将每个词对应到包含这个词的所有文档及其位置,比如在上述例子中,"Guangzhou"这个关键词会在两个文档中出现,分别记录它们的出现频率和位置,这样在查询时就能快速定位到包含特定词的文档。 除了核心的...

    lunece 学习笔记实用知识库分享知识分享

    lunece 学习笔记实用知识库分享知识分享 在本文中,我们将从多方面探索 Lucene 和 Solr 相关的知识点,并对其进行详细的分析和解释。 Lucene 和 Solr 的基本概念 Lucene 是一个基于 Java 的搜索引擎库,提供了...

    Lucene.net高速创建索引

    **正文** 标题“Lucene.net高速创建索引”所涉及的核心技术是Apache Lucene.NET,这是一个开源全文搜索引擎库,它是Lucene项目针对.NET框架的移植版本。Lucene.NET提供了高效、可扩展的文本搜索功能,使得开发者...

    最新版linux lucene-8.5.1.tgz

    Linux Lucene 8.5.1是开源全文检索库Apache Lucene的一个针对Linux平台的最新版本。Lucene是一个高度优化的、用Java编写的搜索引擎库,它为开发人员提供了强大的文本搜索功能,使得构建高性能的全文检索应用变得简单...

    lucene-4.10.2

    《深入理解Lucene 4.10.2:构建高效全文搜索引擎》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。在Java编程语言中,它提供了强大的文本搜索功能,广泛应用于各种信息检索系统。...

    Lucene检索

    **Lucene检索** Lucene是Apache软件基金会的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。这个“Lucene检索”示例将引导我们理解如何利用Lucene进行基本的全文索引和搜索操作。 ...

    solr的学习

    - **example**:Solr 工程的例子目录,包括 solr、multicore 和 webapps。 - **example/solr**:包含一个默认的 SolrCore。 - **example/multicore**:包含多个 Core 目录。 - **example/webapps**:包含 solr....

    全文检索 lucene

    作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为...

    Lucene常用的Demo

    `LuceneDemo`通常包含更复杂的例子,可能涉及多字段搜索、评分机制、过滤器以及排序等功能。这个示例可能涵盖了从数据源读取数据、创建索引、查询优化和结果处理的完整流程。学习此示例,可以帮助你理解如何利用`...

    最新.net技术博客源代码.rar

    自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎...

    Blog-online-System:已经上线的SpringBoot博客项目

    SpringBoot +Shiro+Mybatis +Thymeleaf +Layui+mysql+Lunece 图片使用的七牛云,属性设置在类cn.coderzhx.utils.VariableName里 如果不想用七牛云那么修改为为tomcat的upload目录 如果仅仅是本地运行项目的话,七牛云...

    X3BLOG 单用户版 1.0 build80707 (access)

    <br> 自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索...

    x3blog 单用户博客系统 1.0.80802 编译版

    5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...

    x3blog 单用户博客系统 1.0.80802 源代码

    5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...

    x3blog单用户博客程序源码-1.0.build80802-src

    自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...

Global site tag (gtag.js) - Google Analytics