現在、検索には以下を使用しています。ユーザーが入力するすべての用語は、少なくとも 1 回は記事に表示される必要があると思います。正規表現で一致メソッドを使用します
^(?=.*one)(?=.*two)(?=.*three).*$
、g
、i
およびm
現時点では、matches.length を使用して一致数をカウントしていますが、動作は期待どおりではありません。例: " one two three. one two three
" では 2 つの一致が得られますが、実際には 6 つになるはずです。
私が何かをするなら
(one|two|three)
その後、6 つの一致が得られますが、データがある場合:
"one two. one two"
すべての単語が少なくとも 1 回出現するわけではないため、実際には 0 にしたいのですが、4 つの一致が得られます。最初の正規表現を実行して、少なくとも 1 つの「一致」があるかどうかを確認できます。存在する場合は、次に 2 番目の正規表現を使用して実際の一致数をカウントしますが、これにより、プログラムの実行が以前よりも大幅に遅くなります。2500 の json 記事に対してこの正規表現を実行すると、そのままで 60 秒から 120 秒かかります。
これをより速くまたはより良くする方法についてのアイデアはありますか? 正規表現を変更しますか? 一致の代わりに search または indexOf を使用しますか?
注:ローカル永続性とjqueryにlawnchair dbを使用しています。コードを phonegap と chrome パッケージ アプリとしてパッケージ化します。