SQLiteデータベースのテーブルを照会して、指定された単語セットに一致するテーブルのすべての行を返す必要があります。SQLite - 1つ以上の文字列を含むテキストフィールドを含む行を返す方法
より正確には、〜80,000レコードのデータベースがあります。フィールドの1つは、レコードあたり100〜200語程度のテキストフィールドです。私ができるようにしたいのは、200の単一単語キーワード( "apple"、 "orange"、 "pear"、...)のリストを取って、少なくとも1つを含むテーブルのすべてのレコードのセットを取得することです説明列にキーワード用語の
これを行うにはすぐに明白な方法は、このようなものである:
SELECT stuff FROM table
WHERE (description LIKE '% apple %') or (description LIKE '% orange %') or ...
私は200語を持っている場合、私は不器用であることを私には思える大きく、厄介な探して、SQL文で終わる、萌芽驚くべきことに処理に時間がかかりません。1000レコードにつき1秒以上です。
この回答はBetter performance for SQLite Select Statementに近いと思われ、結果としてインデックスを作成しましたが、http://www.sqlite.org/optoverview.htmlによると、LIKE演算子が%ワイルドカードの先頭に使用されている場合、sqliteは最適化を使用しません。
SQLのエキスパートではありませんが、私はこれをやっていると仮定しています。もっと経験豊富な人がこれを行うより賢明で、おそらくより効率的な方法を提案できるかどうか疑問に思っていましたか?
また、問題に使用できる優れた方法がありますか?
問題を正確に解決していただきありがとうございます。私はリンクを見て、それは完璧に見えます。 – Sam