gpt4 book ai didi

javascript - IndexedDB:索引对象值?

转载 作者:行者123 更新时间:2023-11-29 22:00:45 25 4
gpt4 key购买 nike

我有关键字嵌套在不同深度的对象,我想将其存储在索引中。关键字的格式如下:

{
"list": [
{
"keywords": ["hi", "bye"],
"rules": "contains 1 of the following"
},
{
"keywords": ["foo", "bar"],
"rules": "contains all of the following"
}
]
}

我想一次搜索所有关键字,然后通过匹配的“列表”循环查找相似之处。我想知道最好是将所有关键字分别存储在另一个表中,还是遍历每个列表并每次都使用新的正则表达式搜索关键字,请记住这些列表有数千个。

最佳答案

  • indexedDB 只支持整值比较:(string1 == string2, string1 >= string2, string1 <= string2)。您不能使用正则表达式搜索字符串,除非您计划将所有单词列表加载到数组中的内存中并遍历该列表。
  • 您可以将值存储在数组中作为您要存储的每个对象的属性,然后在该属性上创建一个多条目索引。使用多条目标志具有获取数组并在索引中为数组的每个值创建一行的效果。例如,如果您有对象 {prop1:value1,prop2:[value2,value3]},并且您在 prop2 上创建了一个索引,并且您对 createIndex API 方法使用了多入口标志,则索引中将出现两行,一行用于 value2,另一行用于 value3。然后您可以在此索引上打开游标并遍历其行,首先看到 value2,然后看到 value3(取决于顺序)。这将是您构建并加载到内存中的数组的来源,然后在内存中单独使用您自己的正则表达式测试条件进行循环。
  • 或者,您可以将单词作为单独的对象存储在单个存储中。每个对象看起来都像 {prop:word}。然后,您可以在该商店上打开一个游标并遍历所有单词以在内存数组中构建相同的单词,然后您可以在该数组上进行迭代并使用您的正则表达式进行测试。
  • 遍历内存中的值并执行测试正则表达式会很慢。真的很慢。当您有更多关键字时,它只会变慢。但您或许应该先尝试使用它,因为它的速度可能足以满足您的需求。
  • 如果你真的想加快速度,你必须学习几个高级概念。例如,如果您愿意对可以应用于表的查询(正则表达式)类型施加约束,则可以考虑使用高级数据结构,如 trie (或查看 jQuery 的创建者 John Resig 的 this article)。使用 trie 与“如何”使用 indexedDB 无关。这是您可以在 indexedDB 之上自己创建的东西。但如果这样做,您可能可以非常快速地查询 trie 数据结构。

关于javascript - IndexedDB:索引对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com