情境:
我有数亿个包含多个“数据列”数据的文档。标题,描述等。文档的大小范围从500字节到100kb,具体取决于它们包含的数据/内容的数量。我需要高效,快速,廉价地对所有这些文档进行大量分析。
对于这个特定的问题,我们将坚持只分析这些文件中的字符串。在我的特定情况下,我需要比较所有这些文件的标题,看看它们之间的相似程度。
现在我正在使用SimMetrics.Net.Metric.DiceSimilarity来查找相似度> 90%。这当然要求我循环遍历所有文档,将它们加载到内存中,比较所需的字段,更新源文档等。
有1000条记录,我循环1000 x 1000 = 1,000,000次执行。将其扩展到300,000,000条记录,并且它几乎没有实用性。
技术平台:
我正在使用C#进行开发,并使用Azure平台作为我的基础架构,SaaS,PaaS。
目标:
我尝试过的事情:
最后的想法
因此,我需要在几秒钟内将数亿条记录相互比较,以便在几秒钟内完成每隔几分钟完全改变的数据集的字符串相似百分比。
不可能级别: 99,999,9999
必须达到这个水平:必须具备 - 业务重要性
时间范围:昨天当然!
答案 0 :(得分:1)
LSH(局部敏感度散列)是针对此类问题而制定的。用它来查找数以百万计的推文中的双打。进行Google搜索或从此处https://blogs.msdn.microsoft.com/spt/2008/06/11/locality-sensitive-hashing-lsh-and-min-hash/
开始答案 1 :(得分:0)
弹性搜索建立在Lucene BTW之上。
答案 2 :(得分:0)
文件是否位于Windows虚拟机中?如果是这样,也许您使用Windows搜索API。即使文件存储在SQL FileTable中,您仍然可以使用Windows搜索Api。希望这有帮助
Windows search - full text search in c#
https://msdn.microsoft.com/en-us/library/windows/desktop/aa965362(v=vs.85).aspx