Lucene搜索引擎类库介绍
Lucene 简介 Lucene 是 Apache 软件基金会的顶级开源项目,是一个用 Java 实现的全文检索类库。它不是一个完整的搜索引擎产品,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。 发展历史 1997年:Doug Cutting 开始开发 Lucene 2001年:成为 Apache 开源项目 2005年:成为 Apache 顶级项目 现在:广泛应用于各类搜索系统,如 Elasticsearch、Solr 等 核心特性 高性能 倒排索引结构,检索速度快 增量索引,支持实时搜索 索引文件小,压缩率高(约为原文件的 20%-30%) 多线程索引构建,充分利用硬件资源 缓存机制优化,减少 I/O 操作 可扩展性 支持多种数据源:文本、PDF、Word、HTML 等 插件化的文本分析器架构 自定义评分机制(TF-IDF、BM25 等) 字段加权和提升因子 可自定义存储结构 高效的搜索算法 倒排索引(Inverted Index)实现 跳跃表(Skip List)优化 布尔查询优化 短语查询优化 相关度排序算法 核心概念 文档(Document) 索引和搜索的基本单位 由多个域(Field)组成 每个文档都有唯一的文档 ID 支持动态字段和嵌套结构 域(Field) StringField:不分词的字符串字段 TextField:需要分词的文本字段 NumericField:数值类型字段 StoredField:仅存储的字段 自定义字段类型 词项(Term) 索引的最小单位 由域名和词值组成 存储在倒排索引中 支持通配符和模糊匹配 索引结构 段(Segment) 自包含的倒排索引子集 不可变性(Immutable) 定期合并优化 分段搜索和合并 倒排索引组成 ...