目前我正在使用下面的搜索。我假设用户键入的每个术语都必须在文章中至少出现一次。我使用正则表达式的匹配方法
^(?=.*one)(?=.*two)(?=.*three).*$
, g
,i
和m
目前我使用matches.length来计算匹配的数量,但行为并不像预期的那样。例如:“ one two three. one two three
”会给我 2 个匹配项,但实际上应该是 6 个。
如果我做类似的事情
(one|two|three)
那么我确实得到了 6 场比赛,但如果我有数据:
"one two. one two"
我得到 4 个匹配项,而实际上我希望它为 0,因为并非每个单词都至少出现一次。我可以做第一个正则表达式来检查是否至少有一个“匹配”。如果有,我随后会使用第二个正则表达式来计算实际匹配数,但这会使我的程序运行速度比现在慢得多。对 2500 篇 json 文章执行此正则表达式需要 60 到 120 秒。
关于如何使它更快或更好的任何想法?更改正则表达式?使用搜索或 indexOf 代替匹配?
注意:我正在使用草坪椅数据库进行本地持久性和 jquery。我将 phonegap 的代码打包为一个 chrome 打包的应用程序。