很早就对lucene这个基于java的apache开源全文搜索框架有过初步的学习了,但是由于学习等各种原因,迟迟都没有发表一些博文,今天就贴出一些博主的一些学习笔记,希望对lucene有兴趣的博友指点指点。
对于学习lucene这个全文搜索框架,第一步,要学会建立起索引:
package lucene; 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.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.Version; public class Lucene { /** * 建立索引 * @throws IOException */ public void index() throws IOException { //1、创建directory Directory directory=new RAMDirectory(); //创建内存索引 Directory directory2=FSDirectory.open(new File("E:/lucene/index01")); //索引创建于硬盘中 //2、创建indexWriter //创建IndexWriterConfig,从中文名可以看出,这个是IndexWriter的配置类, 有两个参数,第一个是版本号,第二个是分词器 IndexWriterConfig iwc =new IndexWriterConfig(Version.LUCENE_43,new StandardAnalyzer(Version.LUCENE_43)); IndexWriter iw=new IndexWriter(directory2,iwc); //3、创建document对象 Document document; //4、为document对象添加Field域 //创建文件夹,文件夹里面有三个文档 File f=new File("E:/lucene/luceneexamplefile"); //遍历文件夹里面的三个文档,为每个文档添加索引域,即建立当前这篇文档的索引 for(File file:f.listFiles()) { document= new Document(); document.add(new Field("content",new FileReader(file))); document.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED)); document.add(new Field("filepath",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED)); //5、通过indexWriter将文档添加到索引中 //因为iw是indexWriter,它里面封装了索引创建的目标地方和分词器等等的配置, //而且提供了一个封装方法,只要调用这个方法,把这篇文档传进去,即可建立起当前文档的索引 iw.addDocument(document); } //类似于数据库一样,用完要关闭 iw.close(); } }
上面代码是建立索引的步骤以及代码实现,下面写个测试类:
public class LuceneTest { @Test public void testIndex() throws IOException { Lucene lucene=new Lucene(); lucene.index(); } }
这样就可以生成索引了,执行结果如下:
就这样,索引就建立成功了。
相关推荐
Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会...
Lucene采用倒排索引(Inverted Index)结构,为每个唯一的术语建立一个术语表,记录该术语在哪些文档中出现以及出现的位置信息,以加速查询速度。 2.3 索引优化 在4.10.3版本中,Lucene对索引过程进行了优化,包括...
在建立索引时,Analyzer会进行分词,并计算每个词在文档中的频率,这些信息被保存在倒排索引中,用于后续的搜索和排名。 3.3 压缩存储 为了节省磁盘空间,Lucene采用了高效的压缩技术来存储索引,如变长编码和位图...
### 第二章 索引建立 #### 2.1 创建 Directory 和 Writer - `Directory`用于指定索引的存储位置,如磁盘或内存。 - `IndexWriter`创建时需传入`Directory`,用于写入索引。 #### 2.2 创建文档 - `Document`对象...
Lucene的工作流程主要包括索引创建、索引读取和搜索三个阶段: - 创建索引:使用Analyzer处理文档,生成Token流,然后通过IndexWriter写入索引。 - 读取索引:使用IndexReader打开已有的索引文件。 - 搜索:Searcher...
分词器将字段内容划分为一系列的关键词,这是建立索引的第一步。Lucene提供了多种分词器,如标准分词器(StandardTokenizer),适用于大多数语言。 **1.4 索引(Index)** 索引是Lucene的核心,它将文档的内容转换...
创建索引时,Lucene 会读取文档内容,使用分词器进行分词,并为每个词语建立倒排索引。倒排索引将词语映射到包含该词语的文档列表,便于快速查找包含特定词语的文档。 #### 2.2 更新索引(Updating) 当文档发生...
**4.3 LUCENE中索引使用** - **5.1 建立索引的一个简单例子**: 提供一个简单的示例来演示如何使用Lucene创建索引。 - **5.2 理解索引中的核心类**: 解释Lucene中用于索引操作的主要类的作用。 - **5.2.1 ...
- 建立索引:利用工具如Lucene建立高效的全文索引。 - 搜索与排名:支持用户查询并返回相关性高的结果。 **1.4 本章小结** - 本章概述了搜索引擎的基本概念和发展历程,并介绍了构建一个简单搜索引擎所需的步骤...
4. **FieldBridge**:桥接对象,用于在ORM实体字段与Lucene文档字段之间建立映射。 5. **索引增强**:通过注解,可以在ORM实体类和属性级别定义索引行为,如@Field、@AnalyzerDef等。 三、配置 在使用Hibernate ...
该模型通过对Lucene评分机制的改进,建立了一个新的文档有效性二次判别模型,通过一个多维非线性计算函数来评估搜索结果的相似度,并据此对搜索结果进行排序。 #### 三、系统特点 - **自然语言输入**:用户可以...
Hibernate Annotations API 中文文档 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 ...5.1. 使用Lucene为实体建立索引 5.1.1. 注解领域模型 5.1.2. 启用自动索引
索引过程包括解析文档、提取字段、建立索引等步骤。 - **1.3.2 搜索**:用户通过提交查询请求到Solr,Solr根据请求条件从索引中检索数据并返回结果。 #### 二、Solr的安装与配置 **2.1 在Tomcat下Solr安装** - **...
- **3.2.2 构建索引**:向Solr中添加文档,并建立索引。 - **3.2.3 搜索测试**:编写查询语句,测试索引的有效性。 **3.3 搜索引擎的规划设计** - **3.3.1 定义业务模型**:明确搜索的目标和范围。 - **3.3.2 定制...
总结,Solr 作为强大的全文搜索引擎,提供了一整套解决方案,从数据导入、索引建立到查询优化和集群管理。通过深入了解 Solr 的工作原理和配置技巧,我们可以构建出高效、可靠的搜索系统,满足各种业务场景的需求。...
- **4.3 流媒体内容提取**:包括音频流和视频流内容的提取方法。 - **4.4 抓取限制应对方法**:面对反爬虫机制时的应对策略。 - **4.5 本章小结**:总结文档文本内容提取的方法和技术要点。 #### 第5章:自然语言...
- **6.4 优化使用Lucene**:提升索引和查询性能。 - **6.5 查询大容量索引**:处理海量数据的查询需求。 #### 八、用户界面设计与实现 良好的用户界面能够提升用户体验,增加搜索引擎的可用性。 - **7.1 Lucene...
- **3.1.2 SOLR的使用过程说明**:从索引建立到搜索结果呈现的整个流程。 ##### 3.2 一个简单的例子 - **3.2.1 SolrSchema设计**:为示例项目设计一个简单的索引结构。 - **3.2.2 构建索引**:向Solr添加文档以构建...
**4.3 全文索引 (Full Text)** 用于全文搜索的索引,支持复杂的搜索表达式。 **4.4 Lucene 全文索引 (Lucene Full Text)** 利用 Lucene 引擎实现的全文索引。 **4.5 Lucene 空间索引 (Lucene Spatial)** 用于...