Apache lucene提供的功能大体可以看作是给一些资料建成索引, 再根据搜索词搜索出资料中一些内容。 当中的类主要分为建索引和搜索两种。
一、建索引
建索引的过程为: 输入一串源字符串, 经过Analyzer分词处理,生成Document, 其中各Field要索引的索引, 要存储的存储, 最终通过IndexWriter写入内存或磁盘。
写入相关:同
- 1. IndexWriter 主要是写索引,
- 2. Directory类分为FSDirectory和RAMDirectory。
- 3. Document 一个文档,是多个字段的集合,可以看作是数据库的一条记录,组合成Segment, document先在内存中保存一定的条数, 到了加入到Segment,多个Segment有个MaxMerge, 到达这个数时合并成新的一个. Segment中Document有最多条数, 一般是Integer.MAX_VALUE
- 4. Field 具体字段, Store, Index[NO_NORMS, NO, UN_TOKENIZED, TOKENIZED], 可能设置权值,以便搜索时排在前面。
- 5. Analyzer分析器, 含Filter, Tokoner, 主要的功能是按一定的规则进行分词、去除StopWord使输入串成一个个单词组
二、搜索索引
搜索的过程是:输入搜索词, 通过Analyzer处理, 再通过Parser组合成基本TermQuery搜索项。 最终通过IndexSearch的search(query),搜索出Document集合。
搜索相关的:
- 1. IndexSearcher 以只读的方式找开索引来搜索,(新的内容可以通过reopen)
- indexSearcher.search(query, filter, sort)
- 2. Term:搜索的基本单元, 一般与TermQuery相关, Term[key, content]
- 3. Query: TermQuery, BooleanQuery, PhraseQuery, PrefixQuery, PhrasePrefixQuery,
- RangeQuery, FilterQuery, WildcardQuery
- 4. Filter 要查询时做预处理, 并不是对结果集进行过滤。资源消耗比较大的
- 5. Sort 排序, 对结果进行排序
- 5. Hits, hits.doc(i)
IndexReader
索引更新采用先根据IndexReader.deleteDocuments删除,然后再用IndexWriter.addDocument增加.
三、注意点:
- 1. 对于大数据量的建索引, 可以分多线程, 先RAMDirectory再到FSDirectory
- 2. 选择合适的分词器, 对于索引时间和索引大小都有很大的影响
- 3. 对于搜索我们可以缓存一些结果或者是Query, 以便不搜索索引或解析特别是于RangeQuery解析,对整个索引记录标记是特别耗时的。
- 4. 索引写的时候可以同时索引(写时在文件目录生成一个锁文件), 写完索引搜索不出来新加入的问题的, 要Indexsearch.reopen
- 5. 搜索时多个条件时一般都是BooleanQuery来组合TermQuery
- 大小: 7.3 KB
分享到:
相关推荐
Apache Lucene是一个高性能、全文本搜索库,由Java编写,被广泛用于开发搜索引擎和需要文本检索功能的应用程序。Apache Lucene 4.7是该库的一个版本,它提供了丰富的功能和改进,使得开发者能够轻松地在他们的应用中...
- **索引(Index)**:索引是Lucene中最核心的概念之一,它是由一系列文档构成的数据结构集合,用于快速检索。 - **文档(Document)**:文档是索引的基本单位,每个文档包含一组字段。 - **字段(Field)**:字段是文档中...
Apache Lucene是一个开源的全文搜索引擎库,被广泛用于构建高效、可扩展的搜索功能。它在Java编程语言中实现,但提供了多种语言的接口,包括Python、PHP、C#等,使得开发人员能够轻松地在各种项目中集成高级搜索功能...
- `org.apache.lucene.util`: 提供一些通用工具类和辅助功能。 2. **Lucene的主要逻辑** Lucene的主要逻辑可以分为两个核心部分:索引和查询。 - **索引逻辑**:首先,内容通过语言分析器进行预处理,然后将...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Apache Lucene是一个广泛使用的开源Java库,专门用于构建高级文本检索功能,而Rucene则将这些功能带入了Rust的世界,一个以安全和性能著称的系统级编程语言。 首先,我们来深入了解一下Rucene的核心特性。Rucene的...
《深入 Lucene 索引机制》这篇博文主要探讨了Lucene这个全文搜索引擎的核心索引原理,它在信息检索领域有着广泛的应用。Lucene是一个开源的Java库,它提供了高效、可扩展的文本搜索功能。以下是对Lucene索引机制的...
Apache Lucene是一个高性能、全文本搜索库,由Java编写,被广泛应用于各种搜索引擎的开发中。这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解...
elasticsearchElasticsearch是一个基于Apache Lucene构建的开源分布式搜索和分析引擎,专为云计算环境设计,能够迅速且有效地处理大规模数据集。以下是Elasticsearch的详细介绍: 一、基本特性 分布式架构:Elastic...
Lucene,作为Apache软件基金会的一个顶级项目,是一个高度成熟、广泛使用的全文检索引擎架构。它为开发者提供了一套强大的工具,用于在各种应用中实现高效的全文搜索功能。这个“lucene基本包”包含了Lucene的核心...
这个包是Lucene的基础,包含了索引和搜索的主要类和接口。它提供了文档(Document)的概念,用于存储字段(Field)的数据,如文本、日期或数字。同时,它还包含分词器(Analyzer)用于将文本分割成可搜索的词元,...
这个“Java Lucene 工具类”可能是一个博主分享的关于如何使用Lucene进行文本处理、索引创建和查询执行的实例代码集合。 Lucene的主要功能包括: 1. 文档分析:Lucene包含一个强大的分析模块,可以将输入的文本分解...
1. 模型与数据结构:Lucene的核心库主要包含以下组件:索引(Index)、文档(Document)、字段(Field)和分词器(Tokenizer)。索引是Lucene处理数据的主要方式,它将文本数据转化为便于搜索的结构。文档是信息的...
通过了解和掌握Apache Lucene 7.3.0的核心特性和使用方法,开发者能够构建出强大、高效的全文检索系统,满足各种复杂的搜索需求。无论是企业级应用还是个人项目,Lucene都是值得信赖的文本搜索解决方案。
赠送jar包:lucene-spatial-6.6.0.jar; 赠送原API文档:lucene-spatial-6.6.0-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
《Apache Lucene 6.6.0:全文检索与索引库详解》 Apache Lucene 是一个开源的全文检索库,由Java编写,为开发者提供了强大的文本搜索功能。6.6.0 版本作为官方的最新完整版,集成了众多优化和改进,旨在提供更加...
《Lucene in Action》是关于Apache Lucene的权威指南,这本书深入浅出地介绍了全文搜索引擎的构建和优化。源码的提供使得读者可以更直观地理解Lucene的工作原理,这对于学习和开发基于Lucene的搜索应用非常有帮助。...
Apache Solr 和 Lucene 是两个在全文搜索领域广泛使用的开源框架。它们的组合为构建高效、可扩展的搜索引擎提供了强大的工具。以下是对这两个组件及其在搜索模块设计实现中的关键知识点的详细说明: 1. **Apache ...