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

php/mysql。少なくとも1つのmysql行フィールドに少なくとも2つの特定の単語が存在するかどうかを検出するmysql関数はありますか

    ブール全文検索

    演算子なしで一致する場合+ - green red blueなどに対して レコードに少なくとも1つの単語が含まれているすべての行が返されます: green またはred またはblue

    ブールモード 演算子がない場合、一致する各単語のスコアは 1になります。 。したがって、3つの単語のうち2つに一致するレコードがある場合、スコアは 2になります。 。

    スコアが2以上の行を取得するには:

    SELECT *,
    MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE) `score`
    FROM `my_tab` WHERE 
    MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE)
    HAVING `score` >= 2
    ORDER BY `score` DESC
    

    自然言語モード の場合 スコアリングは完全に異なります。これは主にBM25 に基づいていると考えてください。 。

    大規模なデータセットの場合、ブール全文検索(全文索引を使用) )通常、 REGEXPよりも優れています またはLIKE 一致する単語がどこかの場合ははるかに 本文中。 REGEXP'^ word'などのイニシャルからの照合にはlike/regexpのみを使用します またはLIKE'word%' -インデックスを利用できるかどうか。



    1. SQL Serverへの接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生したのはなぜですか?

    2. MySQLで一時的なプロシージャを作成するにはどうすればよいですか?

    3. 2つの異なる列に基づいて注文する方法

    4. Postgresql intarrayエラー:未定義のシンボル:pfree