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(); } }
相关推荐
**Lucene 建立索引与查询指南** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效、可扩展的搜索功能,被广泛应用于各种项目和产品中。本指南将详细介绍如何使用 Lucene 创建索引以及...
【lucene.net 全文检索】Lucene 是一个高性能、可扩展的信息检索库,它提供了强大的文本搜索功能。在.NET环境中,我们通常使用Lucene.Net,这是一个针对.NET Framework的移植版本。本文主要介绍如何在C#中使用Lucene...
《Lucene入门之HelloWorld》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,用于在各种应用中实现文本的索引和搜索。这篇博文将带你走进Lucene的世界,通过...
在"Lunece_search"的压缩包文件中,很可能包含了实现上述步骤的代码示例或者教程。通过阅读和实践这些示例,我们可以更好地理解和掌握Lunecy+ES在实际项目中的应用。 总的来说,Lunecy+ES的组合为开发者提供了一套...
倒排索引将每个词对应到包含这个词的所有文档及其位置,比如在上述例子中,"Guangzhou"这个关键词会在两个文档中出现,分别记录它们的出现频率和位置,这样在查询时就能快速定位到包含特定词的文档。 除了核心的...
lunece 学习笔记实用知识库分享知识分享 在本文中,我们将从多方面探索 Lucene 和 Solr 相关的知识点,并对其进行详细的分析和解释。 Lucene 和 Solr 的基本概念 Lucene 是一个基于 Java 的搜索引擎库,提供了...
**正文** 标题“Lucene.net高速创建索引”所涉及的核心技术是Apache Lucene.NET,这是一个开源全文搜索引擎库,它是Lucene项目针对.NET框架的移植版本。Lucene.NET提供了高效、可扩展的文本搜索功能,使得开发者...
Linux Lucene 8.5.1是开源全文检索库Apache Lucene的一个针对Linux平台的最新版本。Lucene是一个高度优化的、用Java编写的搜索引擎库,它为开发人员提供了强大的文本搜索功能,使得构建高性能的全文检索应用变得简单...
《深入理解Lucene 4.10.2:构建高效全文搜索引擎》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。在Java编程语言中,它提供了强大的文本搜索功能,广泛应用于各种信息检索系统。...
**Lucene检索** Lucene是Apache软件基金会的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。这个“Lucene检索”示例将引导我们理解如何利用Lucene进行基本的全文索引和搜索操作。 ...
- **example**:Solr 工程的例子目录,包括 solr、multicore 和 webapps。 - **example/solr**:包含一个默认的 SolrCore。 - **example/multicore**:包含多个 Core 目录。 - **example/webapps**:包含 solr....
作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为...
`LuceneDemo`通常包含更复杂的例子,可能涉及多字段搜索、评分机制、过滤器以及排序等功能。这个示例可能涵盖了从数据源读取数据、创建索引、查询优化和结果处理的完整流程。学习此示例,可以帮助你理解如何利用`...
自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎...
SpringBoot +Shiro+Mybatis +Thymeleaf +Layui+mysql+Lunece 图片使用的七牛云,属性设置在类cn.coderzhx.utils.VariableName里 如果不想用七牛云那么修改为为tomcat的upload目录 如果仅仅是本地运行项目的话,七牛云...
<br> 自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索...
5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...
5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...
自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...