1

大きなmysqlテーブルでキーワードを検索する検索機能がありますが、すべての悪い単語を除外する必要があるため、MySQLで次のタイプのAND比較を行う必要があります。これは禁止された単語の長いリストです(500以上)、これにより非常に遅く、

SELECT * FROM keywords WHERE 1  
    AND keyword NOT LIKE '%love%'
    AND keyword NOT LIKE '%hope%'
    AND keyword NOT LIKE '%caring%'
    AND keyword NOT LIKE '%x%'
    AND keyword NOT LIKE '%happiness%'
    AND keyword NOT LIKE '%forgiveness%'
    AND keyword NOT LIKE '%good%'
    AND keyword NOT LIKE '%great%'
    AND keyword NOT LIKE '%positive%'
    AND keyword NOT LIKE '%sharing%'
    AND keyword NOT LIKE '%awesome%'
    AND keyword NOT LIKE '%fantastic%' 

これを行う他のより良い方法はありますか?

4

2 に答える 2

2

LIKEパターンマッチングを使用すると、インデックスを使用する方法がないため、パフォーマンスが低下します。@fuzicが示唆するような正規表現を使用すると、さらに悪い結果になります。

優れたパフォーマンスが必要な場合は、フルテキストのインデックス作成ソリューションを使用する必要があります。

これについて説明し、プレゼンテーションの全文検索スローダウンでいくつかのソリューションを比較します。


簡単な答え:SphinxSearchを使用してください。

于 2013-03-13T03:26:10.450 に答える
0

文字列の完全なセットを認識する有限状態マシンを構築するよりも悪いことをする可能性があります。手作業でコーディングするのは面倒ですが、幸いなことに、LEXやその子孫や親族などのツールは、そのプロセスを自動化するために40年近く使用されてきました。

于 2013-03-13T03:35:27.820 に答える