sql >> データベース >  >> RDS >> Mysql

SQLテーブル内でフレーズを検索する方法

    スペルミスの問題は、純粋なMySQLでうまく解決することは、不可能ではないにしても難しいです。

    複数列のFULLTEXT 検索はそれほど悪くはありません。

    クエリは次のようになります...

     SELECT column, column
       FROM table
      WHERE MATCH(Company, FirstName, LastName, whatever, whatever) 
          AGAINST('search terms' IN NATURAL LANGUAGE MODE)
    

    MySQLが最初にヒットする可能性が最も高いと推測した順に並べられた、一連の結果が生成されます。 MySQLの推測は素晴らしいものではありませんが、通常は適切です。

    FULLTEXTが必要です MATCH()の列のリストに一致するインデックス 句。そのインデックスの作成は次のようになります。

    ALTER TABLE book 
    ADD FULLTEXT INDEX Fulltext_search_index_1 
        (Company, FirstName, LastName, whatever, whatever);
    

    質問へのコメントにもかかわらず、検索する列のグループのインデックスが必要です。

    20K行は、最近のビンテージサーバーハードウェアに大きな負担をかけることはありません。

    スペルミス:SOUNDEX()を試すことができます 、しかしそれはアメリカ英語で人々の名前を調べるためにベルシステムによって設計された20世紀初頭のアルゴリズムです。それは多くの誤検知ヒットを取得するように設計されており、実際には岩のバケツよりも扱いにくいです。

    本当にスペル修正が必要な場合は、Sphinxを調査する必要があるかもしれません。




    1. selectステートメントのパラメーターとしてパーティション名を使用するにはどうすればよいですか?

    2. PostgreSQLデータソースをWildFly9.0に追加するにはどうすればよいですか?

    3. FETCHALLを使用せずにMYSQLPDOで2回フェッチする方法

    4. mysql_real_escape_stringは問題を引き起こしますか?