我是SOLR的新手并阅读其文档。我无法弄清楚他们使用期限文件时的含义。它几乎感觉就像最初的记录,但后来我读到更多我可以将它与不同的东西联系起来,比如实际文档(word,pdf等等)或字段..有人可以澄清它真正指的是什么吗?
例如详细信息下的http://lucene.apache.org/solr/ - >他们将模式称为文档。我还检查了他们没有参考的术语页面。 http://wiki.apache.org/solr/SolrTerminology
答案 0 :(得分:2)
当我查看MongoDB时,我也对术语document
感到困惑:-)。您可以看到https://en.wikipedia.org/wiki/Document-oriented_database。
Solr文档大致相当于数据库表中的一行。但Solr(和MongoDB)文档可以更好地被认为是“聚合”行。 (NoSQL Distilled使用术语聚合数据库。)
在DB world中,您可以将来自不同表的数据存储到聚合表中,以便于数据检索。同样,您可以从不同的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
和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
并将作者映射到书中。然后,您在这些表中加入以获取所需的字段。在“文档”世界中,您将所有这些字段都放在一个文档中。