【发布时间】:2019-01-03 04:49:11
【问题描述】:
在查看 DnD Insider 和 Kindle 应用等产品时,用户可以在大型文本数据结构中快速搜索匹配的文本字符串。如果我要制作一个 Web 应用程序,允许用户快速搜索“规则手册”(或类似文本)以查找匹配条目并提取数据进行阅读,我应该如何组织数据?
我认为将所有数据放入内存不是一个好主意。但是如果我将它存储在某种数据库中,那么搜索数据库并检索适当匹配条目的好方法是什么?
到目前为止,我相信我将使用 Boyer-Moore 算法来实际进行搜索。我可以将规则文本的各个部分放入不同的数据库条目中。用户搜索将优先搜索节标题而不是节正文。由于文本将是静态的并且用户不可编辑,也许存储每个单词的数组会起作用?
【问题讨论】:
-
你的文字到底有多大?供参考,甚至圣经 (KJV) 也只有 4MB 左右
-
你可以试试 ElasticSearch。您可以查看here了解更多详情。
-
你研究过后缀数组和后缀树吗?
-
三元搜索尝试是一种有效的空间和时间数据结构。
-
您的数据有多大,多久更改一次?您是在寻找全文搜索,还是只是短语搜索?也就是说,如果您搜索“blue goose”,它会匹配“blue spruce goose”吗?你想处理模糊搜索,这样如果有人搜索“blew goose”,它仍然会匹配“blue goose”?您的数据存储限制是什么?您的预期流量是多少?您的预期响应时间是多少?您需要向我们提供更多信息,然后我们才能给您任何接近合理的答案。
标签: javascript algorithm data-structures