0

我一直在为我的项目的下一阶段研究以下NoSQL数据库:

elasticsearch 将自己定位为主要服务于高级搜索场景,而 RavenDB 将自己定位为面向文档的数据库。

首先,该文档将围绕视频。每个人都有一个自然的身份。这将是文件的关键。

围绕这一点,我在不一定是标量或平面的字段中添加其他内容,因为信息将来自具有不同结构的许多不同来源。

例如,将有来自视频提供商的 Atom 提要的内容、嵌入了视频的博客文章,以及来自数据仓库项目的其他数据片段。

所有项目都没有固定的结构(实际上,每个项目都非常特定于领域),唯一与它们相关的是上面提到的视频的自然键。

也就是说,一旦我在上述解决方案之一中获得了这些信息,我就会想用它做一些事情:

  • 剔除它以帮助填充随机森林中的变量,以便对视频进行分类
  • 通过基于 Web 的前端(如果您必须知道,ASP.NET MVC)提供对视频的一般搜索(一般自由文本,不基于随机森林的结果)

有一些要求:

  • 我很可能会在 ASP.NET 共享网络托管环境中。这意味着我将拥有一台机器,并且无权设置服务。可嵌入的东西会非常有帮助。

  • ASP.NET 环境将托管在 IIS 中,因此可嵌入方面必须在应用程序域回收中继续存在。

  • 我想根据统计分析的结果创建新的索引,这将有助于在网站上进行搜索。

  • 支持自动完成功能(我知道这不是“开箱即用”的请求,但能够达到这一点很重要)。

  • 丰富的同义词支持(我正在索引内容的视频类型中有很多同义词)

我也对诸如Truffler 之类的服务持开放态度,尽管我确实担心成本(在 Truffler 的情况下,有点担心数据中心之间的延迟,因为请求将来自西海岸的网络主机,或来自东海岸的后端流程)。

此外,我不认为一种解决方案需要满足所有要求。我很乐意让一个服务于一个目的而让另一个服务于另一个目的。诚然,迁移很糟糕,但是在这两个文档存储之间迁移要容易一些(而且我不希望它们必然使用相同的文档结构)。

4

1 回答 1

2

我想先说我更熟悉 Elastic Search,所以我可能会有偏见。我认为 RavenDB 看起来很酷,并且可能很好地满足您的一些需求。

这就是我投票支持 Elastic Search 的原因。

  1. 我认为您的常规搜索、分同义词支持在 Elastic Search 中会更简单、更强大。Elastic Search 充分利用了Lucene中许多很棒的搜索功能(即词干提取拼音等)

  2. Elastic Search 具有更好的实时搜索功能。我无法完全确定这是否是您的强烈需求,但是为什么不提供更好的实时搜索。谢伊今年在柏林流行语中很好地解释了这一点。

  3. 使用 Elastic Search,您可以从一台服务器开始,然后轻松扩展到多台服务器。它从一开始就考虑到了云。

有一个Elastic Search .Net API。我很想听听你的决定,以及结果如何。

于 2011-12-09T03:50:43.590 回答