我有一个web应用程序,它依赖于html5离线存储功能,因此它可以由用户访问没有互联网连接。这个应用程序基本上只提供html页面和一点点css和javascript。
我试图添加搜索这些页面上提供的关键字文本的能力,但由于应用程序不能保证访问服务器,它需要能够在客户端执行这些搜索。
我的想法是我可以在浏览器的web sql数据库中存储可搜索的文本,并通过javascript或通过浏览器的sql api执行搜索。我有几个关于最好的方法的问题:
1)我隐约记得一篇关于如何实现这样的东西的文章,可能来自airbnb?有人记得这样一篇文章吗?
2)文本是2,000,000+单词,所以我假设indexOf将在这个数据大小下崩溃。regex有可能撑得住吗?实现实际搜索的一些选项是什么?(库,算法等)有什么文章建议理解字符串搜索算法的权衡,如果我需要沿着这条路走下去?
好吧,我刚刚为您编写了一个快速基准测试,并惊讶地发现您可能可以使用String.indexOf()
。每次搜索大约35毫秒,也就是每秒30次搜索。
编辑:一个更好的基准。似乎有一些初始化延迟,但看起来indexOf
是相当快的。您可以使用基准测试,看看它是否适合您。