elasticsearch 或 RavenDB 是否更适合为统计引擎/随机森林提供动力?

cas*_*One 3 nosql

(注意:这个问题也存在于 StackOverflow 上,但我认为它在这里可能会有更好的接收。如果它证明这是更好的地方,我会关闭/要求迁移/链接到这个。另外,如果它没有真的属于这里,我很乐意删除它。)

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

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

该文档主要围绕视频展开。每个都有一个自然的id。这将是文件的关键。

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

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

所有项目都没有固定的结构(实际上,每个项目都非常特定于领域),唯一将它们关联起来的是上述视频的自然关键。

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

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

有一些要求:

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

  • ASP.NET 环境将托管在 IIS 中,因此可嵌入方面必须能够经受住应用程序域回收

  • 我想根据统计分析的结果创建新的索引,我可以轻松地对这些索引进行分析,这将有助于在站点上进行搜索。

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

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

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

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

小智 5

Ravendb 很好地嵌入到 .net 应用程序中,还允许您创建全文(嵌入)lucene.net 索引。鉴于您对托管 elasticsearch 的限制将不是一个可行的选择,因为您需要它作为服务与您的 MVC 应用程序一起运行。

Lucene.net 不支持开箱即用的 facet,但 ravendb 也可以在这里提供帮助:http ://ravendb.net/documentation/faceted-search

Ravendb 还允许您很好地控制 lucene.net 分析器:http ://ravendb.net/documentation/how-indexes-work

披露:我是 elasticsearch .net 客户端 NEST 的作者,所以如果有人想卖给你 Elasticsearch,那就是我 :)