Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中使用索引匹配字符串_Java_String_Performance_Indexing - Fatal编程技术网

java中使用索引匹配字符串

java中使用索引匹配字符串,java,string,performance,indexing,Java,String,Performance,Indexing,我有两个字符串列表。第一个是姓名列表(6MB),第二个是句子列表(大约三百万句)。 我想从句子中找出每个名字。这需要几天的时间。 我使用模式匹配,还检查正则表达式,因为句子和名称是由用户生成的,不确定。 我怎样才能做得更快呢?我建议你看看。 一旦数据加载到其中,它可以在几分钟内给你一个答案。它支持类似SQL的语法和谓词中的正则表达式。因此,您可以将句子加载到其中,并使用where子句中的单词发出查询 最棒的是,与所有云服务一样,它不需要数据库管理技能,也不需要任何维护工作。当然,你需要为这些美好

我有两个字符串列表。第一个是姓名列表(6MB),第二个是句子列表(大约三百万句)。 我想从句子中找出每个名字。这需要几天的时间。 我使用模式匹配,还检查正则表达式,因为句子和名称是由用户生成的,不确定。 我怎样才能做得更快呢?

我建议你看看。
一旦数据加载到其中,它可以在几分钟内给你一个答案。它支持类似SQL的语法和谓词中的正则表达式。因此,您可以将句子加载到其中,并使用where子句中的单词发出查询

最棒的是,与所有云服务一样,它不需要数据库管理技能,也不需要任何维护工作。当然,你需要为这些美好付出代价

我用这个工具用正则表达式搜索了3亿条包含多个文本列的记录,得到的答案通常不到一分钟


需要注意的一个重要警告是:此数据库不支持数据更新(不支持更新或删除记录)。它非常适合静态数据—日志文件、历史记录等。另一个重要的警告当然是数据在云中,不受您的控制。

将名称列表存储在提供快速查找的数据结构中(如哈希表、BST等)。Java为它们中的许多提供了库

现在遍历句子列表并查找已创建名称数据结构中的每个标记。它将节省每次遍历名称列表的时间。尽管如此,它在单线程上仍然需要时间,但可以很容易地并行化

您可以创建多个线程(根据您的计算资源)来执行相同的任务,但从不同的位置开始读取句子文件


对于更复杂的并行化,我建议使用这样的框架,它在内存中进行计算,并使任务轻松扩展到任意数量的线程。

一个合适的数据库可能会更快。我在数据库中拥有所有内容。我不知道如何使用索引来搜索和匹配字符串。要阅读的源代码也可以帮助我。而不是创建一个执行此任务的查询。它应该比用java做任何事情都要快得多。你可以尝试对名称进行哈希运算,然后尝试查找每个单词是否都存在哈希,而不是模式匹配。@KevinEsche这个句子,其实不是一个句子。它是数据库中记录的所有文本信息。名称列表中的名称不完全在文本中,因为文本是由用户生成的,并且它们不完全相同。你能给我推荐一个我能理解你意思的推荐人吗?我不允许把我的数据放在云端!真可惜。这个产品非常适合你的要求