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

キーワード検索とランク付け結果

    これは確かに機能します:

    $searchCondition = "description LIKE '%" . implode("%' OR description LIKE '%", $searchTerms) . "%'";
    $orderCondition = array();
    foreach ($searchTerms as $word) {
        $orderCondition[] = "(length(description)-length(replace(description,\"".$word."\",\"\")))/length(\"".$word."\")";
    }
    $orderConditionString = "(".implode(" + ", $orderCondition).")";
    
    $query = "SELECT description FROM table1 WHERE $searchCondition ORDER BY $orderConditionString DESC";
    

    データベースのアイテムは、降順で並べ替えられます。したがって、最も関連性の高いものが最初になります。

    注:これは、キーワードの数が少ない場合にのみ正常に機能します。各キーワードの長さを3回チェックするため。したがって、より大きなテーブルとより多くのキーワードでの応答時間は少し異なります;)




    1. SQLデータのPHP数学

    2. MySQLのNOW()、SYSDATE()、およびCURRENT_DATE()の違い

    3. JMeterでmysqlデータベーステーブルにファイルをアップロードすることは可能ですか?

    4. 特定の文字で終わる文字列を選択するためのクエリ