Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
String 用每个字符搜索字符串表_String_Macos_Sqlite_Data Structures - Fatal编程技术网

String 用每个字符搜索字符串表

String 用每个字符搜索字符串表,string,macos,sqlite,data-structures,String,Macos,Sqlite,Data Structures,我被绳子的问题缠住了。我有很多(比如说100多个)带字符串的二维数组。我需要在它们中搜索匹配字符串的出现(通过搜索栏输入)。如果出现任何情况,则必须在表视图中显示包含匹配字符串的行。在搜索栏中输入每个字符后,必须优化结果并将其显示在表视图中 所有字符串数据都必须保存,并且必须打开以供以后使用。有谁能提出以下建议吗 在数据库中保存所有二维字符串数组可以吗?(SQLite)?还是xml文件中的每个数组?还是其他更好的主意 如何有效地搜索所有字符串?我正在考虑创建一个trie数据结构,以便更好地搜索

我被绳子的问题缠住了。我有很多(比如说100多个)带字符串的二维数组。我需要在它们中搜索匹配字符串的出现(通过搜索栏输入)。如果出现任何情况,则必须在表视图中显示包含匹配字符串的行。在搜索栏中输入每个字符后,必须优化结果并将其显示在表视图中

所有字符串数据都必须保存,并且必须打开以供以后使用。有谁能提出以下建议吗

  • 在数据库中保存所有二维字符串数组可以吗?(SQLite)?还是xml文件中的每个数组?还是其他更好的主意

  • 如何有效地搜索所有字符串?我正在考虑创建一个trie数据结构,以便更好地搜索


  • 谢谢

    鉴于您有多达20000000个字符串,我不建议您使用XML作为文件格式。这将在磁盘空间和解析时间上增加大量开销。对我来说,数据库绝对是一种更好的方式。如果字符串都是最大长度,则仅字符串的数据量为5GB,因此您甚至可能希望以某种方式压缩它们,具体取决于最终用户的机器

    trie听起来也是一个很好的数据结构选择,可以用来搜索它们。不过,它将是相当大的。它可能不需要整个5GB内存,但由于实现它所需的各种指针和东西,它可能仍然相当大。大小可能取决于字符串前缀之间的重叠量。如果数据太大,您可以使用


    另一种选择是对它们进行排序,并根据用户类型进行二进制搜索。不过,对它们进行动态排序可能效率不高,因此您可能希望保存字符串的预排序索引。(不确定您是否能做到这一点,或者运行应用程序时数据是否发生变化。)

    我不确定是否理解问题1。是的,这两个都是合理的选择。或者你也可以将它们保存到平面文件中。如果没有更多的信息,很难告诉你保存它们的正确方法。谢谢你的回复。我忘了提到字符串数据在每个2*2维数组中都非常庞大,看起来就像一个包含许多行和列的表。请让我知道在这种情况下您还需要哪些其他信息。这个怎么样-数据中的平均字符串有多大?平均二维数组有多大?你们有多少个二维数组?(我猜最后一个是“大于100”,但它是否小于1000?)我只是想了解数据的数量级,但我认为根据您迄今为止所写的内容,我做出了一些错误的假设。字符串的最大长度可以是256个字符。二维阵列的最大大小可达20000*5,即20000行和5列。数组的数量最多可以达到200个。我会使用SQLite数据库将字符串数据保存在磁盘上。和trie或compact前缀树来执行搜索。如果我在MacOSX应用程序中实现此功能,您认为性能如何?