Lucene是如何理解文档的 & 文档类型(Types)是如何被实现的

Lucene是如何理解文档的

在Lucene中,一份文档(Document)由一系列简单的字段-值(field-value)对组成。一个字段必须有值,同时允许包含多值。同样的,一个单一的字符串在分析处理过程中可能被转换成多个值。Lucene不关心值到底是字符串、数字还是日期——所有的值都以不可理解的比特值(opaque)对待。

当我们在Lucene中索引一份文档时,值和字段在反向索引(inverted index)中被关联起来。可选项的是,是否将原始值存储起来以便今后使用,存储后的值是不可更改的。

文档类型(Types)是如何被实现的

Elasticsearch的类型实现在简单的基础设施之上。一个索引可能存在多种类型,每种类型都有自己的mapping(类型数据库的schema)。同时同一类型下的每份文档都被存储在相同的索引里。

由于Lucene没有文档类型的概念,文档的类型名被存储在文档的一个被称为_type的元数据中。当我们在搜索某种类型的文档,Elasticsearch只是简单地使用该类型的值在_type字段上进行过滤。

Lucene也没有mapping的概念。Mapping是Elasticsearch的一个层,将复杂的JSON文档映射到Lucene能处理的简单的扁平的文档。


你可能感兴趣的:(elasticsearch,信息检索)