寻找进行大规模集合比较的最佳工具

时间:2011-09-09 17:30:40

标签: database architecture lucene set scalability

我正在开发一个项目,该项目需要在众多其他集合中找到最相交的集合。

也就是说,我有大量(~300k)的集合,每个集合有数百个条目。鉴于其中一组,我需要按照它们的交叉顺序对其他组进行排名。另外,设置条目包含可用作过滤器的属性,例如,对于集合X,按照它们与“绿色”条目子集相交的程度对其他集合进行排序。

我可以自由地设计这个解决方案,我正在寻找技术建议。我最初认为关系数据库是最适合的,但我不确定它在执行这些实时比较时的表现如何。有人推荐了Lucene,但我不确定这个算法是多么合适。

我认为值得一提的是,定期添加新套装,套装可能会增长,但不会缩小。

2 个答案:

答案 0 :(得分:1)

我不知道你在找什么:方法,库,工具?

如果您想通过分布式计算快速计算大型数据集,则应该查看MapReduce,例如在Hadoop上使用Amazon EC2/S3 services

答案 1 :(得分:1)

Lucene可以轻松扩展到您需要的东西。 Solr可能更容易设置,而hadoop很可能只有几百万个数据点。

您需要考虑的是您想要使用的“如何相交”的定义。如果所有集合具有相同的大小,我认为这很容易,但Jaccard距离在其他情况下可能更有意义; Lucene的默认得分通常也很好。

我的建议是:尝试在本地工作站上运行默认的Solr实例(这是一种简单易行的jar类型的交易)。你很快就会知道Solr / Lucene是否会为你工作,或者你是否需要通过Hadoop等自定义自己的代码。