`

lucene索引的建立相关笔记

阅读更多
在document内部,field是保存在一个Vector类型的对象数组中的。 它的主要作用是用来维护它内部的field信息,包括对field的删除,增加,查找等操作
Segment其实是一个逻辑的概念,在一个索引中,可能有多个segment,lucene对索引管理的最大单位就是segment,。。

二,索引文件格式
1,segment
每一个segment代表lucene的一个完整索引段,每一个segment都有统一的前缀,这个前缀是根据当前索引的document的数量转成36进制,再前面再加一个下划线而成的
2,.fnm格式
该文件中包含了Document中的所有field名称
3,.fdx和.fdt格式
前者是一个索引,用于存储document在后者中的位置,后者是用于存储具有store.YES属性的Field的数据
4,.tii和.tis格式
.tis文件用于存储分词后的词条(term),而.tii就是它的索引文件,它标明了每个.tis文件中的词条的位置
5,deletable格式
所有文档被删除时并不是立刻从索引中去除,而是等待下一次合并索引或是对索引进行优化时才真正删除
6,复合索引格式.cfs,

三,索引的合并与索引优化
Directory类型本身是一个抽象类型,它有两个子类,分别为RAMDirectory和FSDirectory,第一个与内存相关,当lucene向其中写入索引时,则是在内存中的一个区域,优点是索引的速度很快,但却无法持久保存。第二个与文件系统的目录有关,当lucene向其中写入索引时,会直接将索引写到磁盘中。
它们初始化过程:
RAMDirectory ramDir = new RAMDirectory();
FSDirectory fsDir = FSDirectory.getDirectory(INDEX_STORE_PATH,true);
IndexWriter fsWriter = new IndexWriter(fsDir,new StandardAnalyzer(),true);
IndexWriter ramWriter = new IndexWriter(ramDir,new StandardAnalyzer(),true);

1,合并索引:fsWriter.addIndexes(new Directory[]{ramWriter });
在合并内存中的索引时,一定要注意将其相应的IndexWriter关闭,以保证滞留在缓存中的文档被“刷”到RAMDirectory中去,这点与使用FSDirectory时一样,否则索引文件并未真正写入目录中去
2,索引优化:IndexWriter的optimize()

四,从索引中删除文档
4.1索引的读取工具IndexReader
IndexReader reader = IndexReader.open(索引路径);
IndexReader.numDocs()----查看当前索引内总共有多少个Document;
Document(int i)拿到对应的document
一般删除有两种方式,1,通过id,但对于开发者来说,很难获得某个文档在索引内的id值,一般不多用。2,按Field信息来删除,:Term term = new Term(“bookname”,”女”);deleteDocuments(term);

分享到:
评论

相关推荐

    Lucene 3.6 学习笔记

    以上就是Lucene 3.6的学习笔记,涵盖了从基础到高级的各种搜索和索引操作,以及相关的分词和扩展功能。通过学习这些内容,可以深入理解Lucene的工作机制,并利用其强大的搜索能力构建高效的应用。

    lucene3.5学习笔记

    `IndexWriter` 是 Lucene 中的核心类之一,用于创建或更新索引。它提供了添加文档、删除文档、优化索引等操作的功能。 **1.1.2 Directory** `Directory` 在 Lucene 中代表了存储索引的地方,可以是硬盘上的文件...

    lucene笔记

    Lucene支持基于相关度的排序机制,这样可以确保最相关的文档出现在搜索结果的前面。 #### 八、中文分词器 **8.1 中文分词器的重要性** 对于中文文本,由于不存在明显的单词边界,因此需要专门的中文分词器来进行...

    lucene课程笔记

    关于lucene开发的工作笔记,详细的介绍了lucene的索引在创建过程中应该主意的一些事项和要求

    本人的Lucene2.9学习笔记

    三、Lucene索引逻辑结构 Lucene的索引结构是分层次的: 1. 索引由多个段组成,每个段包含: 2. 文档(Document):文档对应于实际的数据源,如文件或数据库记录。 3. 域(Field):文档由多个域构成,每个域代表一个...

    Lucene研究,Lucene 读书笔记

    【Lucene 研究与读书笔记】 Lucene 是一个高性能、可扩展的全文检索库,它是Apache软件基金会的顶级项目之一,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene的核心概念,包括全文检索的基本原理、索引的创建...

    lucene 3.5学习笔记

    《Lucene 3.5 学习笔记》 在信息技术高速发展的今天,搜索引擎技术成为了信息检索的核心工具。Apache Lucene,作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene 3.5版本的相关知识...

    lucene文档笔记详解

    **Lucene文档笔记详解** Lucene,源自Apache软件基金会4 Jakarta项目组,是一个备受开发者青睐的开源全文检索引擎工具包。它提供了强大的文本分析、索引构建和搜索功能,但值得注意的是,Lucene本身并不包含完整的...

    【大搜集:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    lucene为数据库搜索建立增量索引.txt lucene数据库索引.txt 新闻系统全文检索的思绪.txt lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt ...

    lucene3.0学习笔记(三)与paoding整合

    《Lucene 3.0 学习笔记(三)与Paoding整合》 在深入了解Lucene 3.0的过程中,我们经常会遇到如何将其与第三方工具进行整合的问题,以提升搜索性能和用户体验。这篇学习笔记主要关注的是将Lucene 3.0与Paoding搜索...

    lucene基础学习笔记&源码

    **Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...

    Lucene 学习笔记 1

    本篇学习笔记将深入探讨 Lucene 的核心概念、工作流程以及如何通过 Indexer 和 Searcher 类进行索引与查询。 ### Lucene 的核心概念 1. **索引(Index)**: 在 Lucene 中,索引是文档内容经过分析、分词后的结构化...

    Lucene学习笔记.doc

    通过建立倒排索引,Lucene可以在查询时快速定位到包含特定关键词的文档,从而极大地提高了搜索效率。同时,Lucene还支持多字段检索、模糊匹配、短语搜索等多种搜索模式,满足不同场景的需求。 总之,Lucene是Java...

    Lucene数据搜索笔记

    Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会...

    lucene笔记共38页.pdf.zip

    《Lucene笔记共38页.pdf》压缩包包含了一份详尽的Lucene学习资料,这份笔记深入浅出地探讨了Apache Lucene这个全文搜索引擎库。Lucene是Java开发的开源库,广泛应用于信息检索和大数据分析领域,为开发者提供了强大...

    lucene学习笔记

    ### Lucene.NET 2.3.1 学习笔记 #### 一、Lucene.NET 简介 Lucene.NET 是一个高性能、全功能的文本搜索引擎库,它为.NET平台提供了一个灵活且强大的全文检索解决方案。该库允许开发者将搜索功能集成到应用程序中,...

    Lucene学习笔记

    【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...

Global site tag (gtag.js) - Google Analytics