残念ながら、MySQLフルテキストインデックスを使用してこれを行うことはできません。 '*nited states'
を取得することはできません 左の文字がインデックスの最も重要な部分であるため、インデックスから即座に。ただし、できます 'United Sta*'
を検索 。
// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)
MySQLのフルテキストは、文中の単語全体を検索するときに最高のパフォーマンスを発揮します。それ以外の場合は、Solr
などの外部フルテキストエンジンを使用することをお勧めします。 または
MySQLのLIKE
に戻ることができます 句ですが、ここでも、LIKE '%nited states'
のようなクエリを実行します またはLIKE '%nited Stat%'
、最初の数文字でインデックスを使用できないため、パフォーマンスも低下します。 'United Sta%'
および'Unit%States'
インデックスは既知の文字の最初の束に対して使用できるため、問題ありません。
MySQLのフルテキストインデックスを使用するもう1つの非常に重要な注意点は、ストップワードリストと最小単語長の設定 。たとえば、共有ホスティング環境では、4文字以上の単語に制限されます。したがって、「Goo」を検索して「Google」を取得すると失敗します。 ストップワードリスト また、「and」、「maybe」、「outside」などの一般的な単語も禁止されています。実際には、548個のストップワードがすべて一緒にあります。繰り返しになりますが、共有ホスティングを使用していない場合、これらの設定は比較的簡単に変更できますが、使用している場合は、デフォルト設定の一部に悩まされることになります。