Lucene研究,Lucene 读书笔记
一、 全文检索的基本概念 (1)、数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。 (2)、索引(Index):将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。 【Lucene 研究与读书笔记】 Lucene 是一个高性能、可扩展的全文检索库,它是Apache软件基金会的顶级项目之一,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene的核心概念,包括全文检索的基本原理、索引的创建过程以及搜索过程。 ### 一、全文检索基本概念 全文检索主要涉及两类数据:结构化数据和非结构化数据。结构化数据如数据库和元数据,其格式固定、长度有限。非结构化数据如电子邮件、Word文档,它们不定长且无固定格式。全文检索的关键在于**索引**,它通过抽取非结构化数据的部分信息并重新组织,创建一种结构化的数据,使得搜索过程能快速进行。 ### 1.1 创建检索过程 #### (1) 分词组件(Tokenizer) 分词组件是全文检索的第一步,它将文档分解为单个单词,去除标点符号,以及停用词(常见的无意义词汇)。 #### (2) 语言处理组件(Linguistic Processor) 语言处理组件进一步优化分词结果,通常包括将单词转换为小写形式,进行词干提取(如"cars"到"car"),以及词形还原(如"drove"到"drive"),得到的处理结果称为**词元(Term)**。 #### (3) 索引组件(Indexer) 索引组件构建一个字典,其中每个词元对应一个文档ID列表(即倒排索引)。字典按字母顺序排序,合并相同的词元,形成文档倒排链表。字典中的关键统计量包括文档频次(Document Frequency,DF)和词频率(Term Frequency,TF)。 ### 1.2 搜索过程 #### (1) 输入查询语句 用户输入如 "lucene AND learned NOT hadoop" 的查询语句。 #### (2) 查询处理 - **词法分析**:识别单词和关键字,如得到单词 "lucene", "learned", "hadoop",以及关键字 "AND", "NOT"。 - **语法分析**:根据查询语法规则形成语法树。不合法的查询会引发错误。 #### (3) 搜索索引 - 找到包含各个词元的文档链表。 - 合并操作,例如找到同时包含 "lucene" 和 "learned" 的文档链表。 - 差操作,排除包含 "hadoop" 的文档,得到最终的匹配文档链表。 #### (4) 结果排序 根据文档与查询语句的相关性对结果进行排序,这涉及到**词权重(Term Weight)**的计算。 ### 二、计算词权重(Term Weight)的过程 词权重是衡量词在文档中重要性的指标,通常涉及以下方面: - **Term-Document关系**:每个文档可以视为由词元构成的向量,通过比较向量的角度或距离来评估相关性。 - **TF-IDF**:词频(Term Frequency)与逆文档频率(Inverse Document Frequency)的乘积,用于量化词在文档中的重要性,考虑了词的普遍性和在文档中的独特性。 Lucene通过高效的索引和搜索算法,实现了对非结构化数据的快速检索。在实际应用中,还可以结合其他技术如布尔模型、向量空间模型或概率模型等,进一步提升检索效果。理解这些核心概念,对于使用或优化Lucene进行全文检索至关重要。
剩余51页未读,继续阅读
- 粉丝: 442
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助