2013-06-28 37 views
1

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

例如http://lucene.apache.org/solr/根据详细功能 - >架构他们正在调用某些文件。我也检查了他们没有参考的术语页面。 http://wiki.apache.org/solr/SolrTerminology

+1

也许这个答案在这个http://stackoverflow.com/questions/2095587/questions-about-solr-documents-and-some-more可以帮助你。 – Alfergon

回答

2

当我正在研究MongoDB时,我也被术语document弄糊涂了:-)。你可以看到https://en.wikipedia.org/wiki/Document-oriented_database

Solr文档大致等同于数据库表中的一行。但Solr(和MongoDB)文档可以更好地被认为是“聚合”行。 (NoSQL Distilled使用术语聚合导向数据库。)

在DB世界中,您可以将来自不同表格的数据存储到聚合表中,以便于数据检索。同样,您可以从不同的数据库表中获取数据并将其存储在Solr文档中,以便更快地进行搜索或富文本分析或刻面,或者使用数据库(或您现有的数据存储)对于不可行或效率低下的任何其他Solr功能。

您还可以将Solr(和Mongo)文档视为JSON对象,或者更简单地将其视为键值对。虽然Mongo允许您存储嵌套文档,但Solr不会。

一个例子嵌套蒙戈文件:

{ 
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主键。您将拥有另一个表authors,其主键为author_idnameage。然后你将有一张表book_authors并将作者映射到书中。然后你加入这些表来获取你想要的字段。在“文档”世界中,您将所有这些字段放入单个文档中。