我正在寻找使用分布式系统处理此数据的建议。我有来自组织范围的计算机(笔记本电脑,台式机,平板电脑等)的数据。示例表包含此组织中每台计算机上存在的所有文件的数据。我们的想法是在FileName或FilePath中找到包含某些关键字(3000+)的文件,即通配符模式匹配。
+-------------+----------+----------+----------+----------+
| MachineName | FileName | FilePath | FileType | FileSize |
+-------------+----------+----------+----------+----------+
当前的解决方案是在一个强大的SQL Server上运行,但由于通配符SQL查询,仍然需要数小时才能运行8000万条记录,即FILENAME LIKE'%abc%'或FILEPATH LIKE'%abc%'列表继续。
我们考虑过SQL上的FullText索引,但是这个活动每月执行一次,然后丢弃数据。因此,在获取全文索引时投入资源在时间和方面看起来并不值得。资源。
要求是在更短的时间内完成此活动,因此我们正在探索选项。
它应该是ElasticSearch或Solr还是其他一些基于云的解决方案?请提供一些高级解决方案的建议。
答案 0 :(得分:1)
对于此用例,ElasticSearch是一个不错的选择。它提供了您所需要的一切 - 因为每个字段都被编入索引,它通常被用作实时全文搜索引擎。
另一方面,Solr也是一个不错的选择。根据您的要求,我认为ElasticSearch提供的功能远远超出您的需求。 Solr有点旧,导致出色的文档。它仅专注于您的案例中没有问题的文本。它可扩展并针对高流量进行了优化,因此它应该适合您的问题。
我认为ElasticSearch和Solr都能满足您的需求;选择取决于你 - 对你更有同情心:)在我看来,如果可以的话,最好是尝试两种方式然后选择。