SOLR术语中的文件是什么?

时间:2013-06-28 15:00:09

标签: tomcat solr terminology

我是SOLR的新手并阅读其文档。我无法弄清楚他们使用期限文件时的含义。它几乎感觉就像最初的记录,但后来我读到更多我可以将它与不同的东西联系起来,比如实际文档(word,pdf等等)或字段..有人可以澄清它真正指的是什么吗?

例如详细信息下的http://lucene.apache.org/solr/ - >他们将模式称为文档。我还检查了他们没有参考的术语页面。 http://wiki.apache.org/solr/SolrTerminology

1 个答案:

答案 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中,不允许嵌套,因此,您可以存储该文档(确保索引与AuthorsAuthorAges匹配):

{
Title: NoSQL Distilled,
Authors: [Pramod Sadalage, Martin Fowler],
AuthorAges: [35, 40],
PubYear: 2012,
Preface: <preface contents>,
BodyText: <entire content of the book>
}

上述文档可以以“规范化”方式存储在数据库世界中,您可以使用JOIN来获取上述所有字段。例如,books表可能只有titlepubYear的唯一字段和book_id主键。您将拥有另一个包含主键authorsauthor_id以及name的表age。然后你将有一个表book_authors并将作者映射到书中。然后,您在这些表中加入以获取所需的字段。在“文档”世界中,您将所有这些字段都放在一个文档中。