我是 SOLR 的新手,正在阅读它的文档。当他们使用术语文档时,我无法弄清楚它们的含义。最初感觉就像是记录,但后来我读的更多,我可以将它与实际文档(word、pdf 等)或字段等不同的东西联系起来。有人可以澄清它真正指的是什么吗?
例如http://lucene.apache.org/solr/在详细功能 -> 架构下,他们将某些东西称为文档。我还检查了他们没有参考的术语页面。http://wiki.apache.org/solr/SolrTerminology
我是 SOLR 的新手,正在阅读它的文档。当他们使用术语文档时,我无法弄清楚它们的含义。最初感觉就像是记录,但后来我读的更多,我可以将它与实际文档(word、pdf 等)或字段等不同的东西联系起来。有人可以澄清它真正指的是什么吗?
例如http://lucene.apache.org/solr/在详细功能 -> 架构下,他们将某些东西称为文档。我还检查了他们没有参考的术语页面。http://wiki.apache.org/solr/SolrTerminology
document
当我研究 MongoDB 时,我也对这个术语感到困惑:-)。您可以查看https://en.wikipedia.org/wiki/Document-orientation_database。
Solr 文档大致相当于数据库表中的一行。但是 Solr(和 MongoDB)文档最好被视为“聚合”行。(NoSQL Distilled使用术语面向聚合的数据库。)
在 DB 世界中,您可以将来自不同表的数据存储到一个聚合表中,以便于数据检索。同样,您可以从不同的 DB 表中获取数据并存储在 Solr 文档中,以便更快地搜索或富文本分析或分面或任何其他对数据库(或您现有的数据存储)不可行或效率低下的 Solr 功能。
您还可以将 Solr(和 Mongo)文档视为 JSON 对象,或者更简单地视为键值对。虽然 Mongo 允许您存储嵌套文档,但 Solr 不允许。
一个嵌套的 Mongo 文档示例:
{
Title: NoSQL Distilled,
Authors: [{name: Pramod Sadalage, age: 35},
{name: Martin Fowler, age: 40}],
PubYear: 2012,
Preface: <preface contents>,
BodyText: <entire content of the book>
}
您可以看到该Authors
字段本身包含 2 个文档。
但是在 Solr 中,不允许嵌套,因此,您可以像这样存储该文档(确保索引与Authors
and匹配AuthorAges
):
{
Title: NoSQL Distilled,
Authors: [Pramod Sadalage, Martin Fowler],
AuthorAges: [35, 40],
PubYear: 2012,
Preface: <preface contents>,
BodyText: <entire content of the book>
}
上述文档可能以“规范化”的方式存储在数据库世界中,您可以使用 JOIN 来获取上述所有字段。例如,books
表可能只有唯一字段和title
主键。您将拥有另一个具有主键和的表和。然后,您将有一个表格并将作者映射到这本书。然后你加入这些表来获取你想要的字段。在“文档”世界中,您将所有这些字段合并到一个文档中。pubYear
book_id
authors
author_id
name
age
book_authors