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

PHPで単語を検索するときのMySQL5.6全文検索の問題

    わかりました、私はついにこれを理解しました。 myisamストップワードはすでにクリアされているようですが、innodbストップワードはクリアされていません。 myisamよりも少し難しいですが、それを必要とする可能性のある他の人のための手順は次のとおりです。

    /etc/my.cnf(またはWindowsの場合はmy.ini)に次の行を追加します。

    ストップワードテーブルを作成します。 settingsというデータベースで作成しました innodb-stopwordsというテーブル 。 innodb_ft_enable_stopword = 0を設定するだけでは不十分です。 、テーブルを作成してリンクする必要があります。

    テーブルがinnodbであることを確認し、valueという列を追加します 、varchar(?)、utf8_general_ci。空のままにするか、テーブルに値を追加できます。

    innodb_ft_enable_stopword = 1  
    innodb_ft_server_stopword_table = settings/innodb-stopwords
    

    mysqlサーバーを再起動します。

    フルテキストインデックスを削除して再作成します。

    サーバーを再起動したくない場合は、変数を動的に設定できます(また、次のサーバーの再起動のためにcnf / iniファイルを更新します)

    --innodb_ft_enable_stopword=1
    --innodb_ft_server_stopword_table=db_name/table_name
    

    インデックスを再作成するための回避策はありません...1つのコマンドで実行できるため、テーブルは常にロックされ、ユーザーにエラーは発生しません。

    ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);
    


    1. selectステートメントでのMysqlの計算

    2. Round()の2番目の引数を列で機能させるにはどうすればよいですか?

    3. MySQLまたはMariaDBのデータベースベンダーロックインの回避

    4. 別のテーブルの列が更新されたときに、あるテーブルの列を更新するトリガーを作成します