在我们详细讲述Lucene索引API之前,来看看概念模型的内容。首先我们先从Lucene索引和搜索的基础单位开始,文档和字段(Documents and Fields),然后再看看Lucene和现代数据库模型的一些重要不同。
文档和字段
一个文档是索引用来索引和搜索的最小单位。它实际上是一个包含很多字段的容器,依次保存了真正的内容。每个字段都有一个名字来区分它,一个文本或二进制值,以及一些参数来描述当进行索引的时候,Lucene要对这些字段所做的操作。为了要索引这些未处理过的数据源,你必须要把它们转为文档和字段。之后,在搜索时,在搜索字段的值;举个例子,一个用户搜索"title:lucene"来查找title字段包含短语lucene的所有文档。
从高级别来看,Lucene会对字段进行如下操作
- 索引还是不索引值。如果你要在这个值上进行搜索,那么必须进行索引。文本字段可能被索引(二进制值得字段被存储就可以了)。当一个字段被索引时,在内容中最先提取出标记(token),这个过程叫做分析(analysis),之后这些标记在进入索引中。
- 如果字段被索引了,它也可以存储词向量(term vector)。词向量是个真正的小型反向索引。可以允许你获取这个字段所有的标记(token)。
- 也可以存储这个字段的值,也就是对没有分析过的值进行逐个复制。这样做是为了在后面可以取到这些内容。这对于用户查看没有更改的内容是非常有用的。比如一篇文章的标题。
把原生的内容分解为文档和字段的过程是迭代的,它依赖于应用程序需求的变化。Lucene并不关心哪些字段被使用了以及它们的名字等等。文档通常有很多字段,如,标题,作者,日期,摘要,文章正文,URL,关键词等等。通常的做法是把所有文本的字段的值插入到一个"content"字段中,以及仅仅索引这个字段,但是仍然独立存储这些最初的字段,用来展现。一旦你创建了文档,你就要把它添加到你的索引中。之后,在搜索的时候,你就可以获取符合查询条件的文档并且把存储的字段值展现给用户。
由于数据库和lucene都是存储数据以及可以用来查询。所以人们常常来比较它们。然而它们有很多重要的不同,首先就是lucene灵活的Schema
灵活的schema
不像数据库那样,Lucene并没有一个全局固定的schema。也就是说,每个你添加到索引的文档都是一个空白状态并且可能和它之前的文档完全不同:可能有不同的字段,任意的索引,存储方式以及词向量的参数。并不要求一定要和之前添加的文档一样。甚至可以有相同的字段,不同的参数。
这样是非常强大的:允许使用迭代的方式来创建索引了。可以很快的来索引文档,而不必有先前的设计。如果你要更改字段,可以开始直接添加额外的字段和重新索引先前添加的文档或者重新创建索引。
也就是说,一个单独的索引可以保存不同内容的文档。说个实例,你可能有个文档来保存产品信息,字段是name和price并且也能保存一个人的文档,包含字段name,age和gender。你可能也要有个不能被搜索的meta文档,它存储了索引或者你的应用的meta信息,如索引最后更新时间或者索引的产品目录,但是这些都不会包含在搜索结果中。
数据库和Lucene第二点主要不同是当你索引的时候,需要你对内容进行打散或者反范式。
反范式
你的文档对于Lucene的展现来说,挑战在于如何解决这两个之间的不匹配。举个例子,XML可以通过内置标签来完成一个递归的文档结构。一个数据库可以通过主键和外键来关联其他的表。微软的OLE文档可以嵌入引用其他文档。然而,Lucene文档是平的。当你创建文档时候,递归和关联关系必须反范式化。开源项目,如Hibernate Search,Compass,LuSQL,DBSight,Browse Engine和ORACLE/Lucene集成都有不同的和有趣的方法来反范式化。
现在你已经明白概念级别的Lucene模型文档了。让我们看看更高级别的索引过程。
分享到:
相关推荐
在这份文档中,介绍了如何使用GMS软件进行MODFLOW模拟的概念模型方法。 概念模型方法是一种在GMS中构建MODFLOW模拟的方法,它利用GIS工具在Map模块中开发出一个待建模场地的概念模型。概念模型方法与直接在三维网格...
在12.5版本中,它提供了对概念数据模型(Conceptual Data Model, CDM)的强大支持,帮助开发者和数据库设计师以抽象、易于理解的方式描绘出业务实体和它们之间的关系。本文将深入探讨PowerDesigner 12.5中概念数据...
其中,“Conceptual Data Model”即概念数据模型模块,是PowerDesigner中的一个重要组成部分,主要用于在逻辑层面上对数据结构进行建模。 #### 二、概念数据模型(CDM) 概念数据模型(Conceptual Data Model, CDM...
然而,这里可能是用户在指代文档时的误用,因为通常所说的“概念数据模型”(Conceptual Data Model)才是数据建模的最初阶段,它关注的是业务领域的概念和实体,而不涉及具体的数据库实现细节。 **概念数据模型**...
- 概念数据模型(Conceptual Data Model)- conceptual data model - 实体-关系模型(Relational Model)- relational model 3. 数据库结构: - 表(Table)- table - 字段(Field)- field/column - 记录...
- **DOM (Document Object Model)**: Provides a structured representation of the HTML document, enabling dynamic manipulation of content. #### The Need for New Modeling Techniques Given the unique ...
描述中的 "2017-01-1172Conceptual Design and Evaluation of a Hybrid Transmission with Power-Split.zip" 提供了一个压缩包文件,其中包含一个PDF文档,很可能详细阐述了该混合动力传动系统的概念设计过程以及...
概念数据模型(Conceptual Data Model,CDM)是PowerDesigner中的一个重要组成部分,它帮助用户在数据库设计的早期阶段抽象出业务实体和它们之间的关系,从而形成一个高层次的数据模型。 在CDM中,我们主要关注以下...
本文将基于统一概念模型(Unified conceptual model)提供对这些概念的详细说明,并探讨它们在软件开发过程中的应用。 首先,模型可以被视为系统的抽象表示,通常用于替代正在研究的系统。模型在本质上是某个系统的...
存储在介质上的数据的结构描述,含存储路径、存储方式、索引方式等 模式指全局模式 视图指外部视图 两层映像 E-C Mapping:External Schema-Conceptual Schema Mapping ----将外模式映射为概念模式,从而支持实现...
Conceptual Caption Dataset is provided by Google Research. 概念标题数据集由谷歌研究工作室提供。 conceptualcaption_Validation_GCC-1.1.0-Validation_datasets.tsv conceptualcaption_Train_GCC-training_...
Medical Image Reconstruction: A Conceptual Tutorial" introduces the classical and modern image reconstruction technologies, such as two-dimensional (2D) parallel-beam and fan-beam imaging, three-...
The aim of this book is to give an overview of the state of the art in model-driven software development. Achievements are considered from a conceptual point of view in the first part, while the ...
本书《Conceptual Mathematics - A First Introduction to Categories》是为程序员编写的范畴论入门书籍,它不需要读者有高深的数学基础,而是从基本概念开始,逐步引导读者深入理解范畴论的基本思想。书名中的...
Conceptual Physics Conceptual Physics Conceptual Physics
1. MIMO系统概念:MIMO(Multiple Input Multiple Output)系统是一种无线通信技术,通过使用多个发送和接收天线来利用空间分集增益,从而提升数据传输速率和通信链路的可靠性。MIMO技术可以大大提高无线通信系统的...
在【描述】中,虽然重复了"Conceptual Design"这一术语,但可以理解为强调概念设计在项目中的重要性。在这个过程中,团队通常会分析业务需求、识别关键问题,并提出可能的解决方案。同时,文档的保密性和专有性也...
它提供了全面的数据建模功能,包括概念数据模型(Conceptual Data Model, CDM)、逻辑数据模型(Logical Data Model, LDM)和物理数据模型(Physical Data Model, PDM),帮助开发者在系统设计阶段清晰地定义和组织...
4. **文档索引**:对信息源进行预处理,创建一个概念化的索引,便于快速查找相关文档。 5. **相似度计算**:使用某种相似度算法(如余弦相似度、Jaccard相似度)评估查询与文档的语义相关性。 6. **结果排序**:...
Model-Driven Architecture in Practice: A Software Production Environment Based on Conceptual Modeling