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

部分的な単語が一致する複数列のmysql全文検索を行う方法

    ブールモードでは、(スコアを高くするだけでなく)文字列が存在する必要があり、+を使用して実行されます。 。プレフィックスの照合は、末尾の*で行われます。 。これはあなたが望むもののようですので、検索してください:

    +John* +S*
    +John* +Smith*
    +Smith* +J*
    +Jo* +S*
    

    フルテキストインデックスは、「単語のどこでも」を検索するのに役立ちません。つまり、*mith*のようなものです。 失敗するはずです。インデックスの文字1から一致することを意味します。

    一致値で並べ替える場合、たとえば、John Smithが必要です。 Johnny Smithson 、これを行います:

     SELECT * FROM user 
     WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
     ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;
    

    > =ft_min_word_lenのすべての単語を追加しない限り、どちらが表示されるかはわかりません。 再度個別に:

    +John* +S* John
    +John* +Smith* John Smith
    +Smith* +J* Smith
    +Jo* +S*
    

    最後の1つは、どちらもデフォルトの4文字であるため、デフォルトのmysqlに並べ替えパラメータを追加することはできませんが、ft_min_world_lenを設定することはできます。 別の方法が望まれます。



    1. MySQL:JOINまたはUNIONなしで2つの異なるテーブルをマージします

    2. SQLクエリからカウントを取得する

    3. GoogleChartのタイムラインアイテムからリンクを作成する

    4. mysqlデータベースを排他的にロックする方法は?