web-dev-qa-db-ja.com

mysqlの「ft_min_Word_len」FULLTEXTに新しい値を設定します

システムパス"ft_min_Word_len" = 4にあるmy-innodb-heavy-4G.iniによって"C:\Program Files\MySQL\MySQL Server 5.1"に変更しましたが、実行すると

SHOW VARIABLES LIKE 'ft_min_Word_len'

まだ結果value= 4が得られました。 my.iniファイルでこの変数が見つかりませんでした。だから私も私のロジックを作成しました。 ft_min_Word_len変数にコピーし、my.iniファイルに配置すると、結果にvalue=3が表示されます。

ただし、3文字の検索では機能しません。サーバーを再起動しました。

3文字の値も検索できるようにするにはどうすればよいですか。

11
Rahul Rawat

このシステムパラメータを変更し、サーバーを再起動してから、すべてのFULLTEXTインデックスを再構築する必要があります。

REPAIR TABLE <TableName> QUICK;
22
valex

これは、必要なすべての修復コマンドを取得するために使用するものです。

SELECT DISTINCT CONCAT("REPAIR TABLE `", TABLE_SCHEMA, "`.`", 
TABLE_NAME, "` QUICK;") FROM information_schema.STATISTICS 
WHERE index_type = 'FULLTEXT';
7
pevik

インデックスを削除してテーブルを変更し、もう一度インデックスを追加してみてください。きっとうまくいくでしょう。

3
engineer2014

FULLTEXTインデックスをドロップして追加するだけです

または段階的に実行して、事前にどれだけ大きくなるかを確認します

CREATE TABLE models_new LIKE models;

ALTER TABLE models_new DROP INDEX name;

ALTER TABLE models_new ADD FULLTEXT name (name);

ALTER TABLE models_new DISABLE KEYS;

INSERT INTO models_new SELECT * FROM models;

ALTER TABLE models_new ENABLE KEYS;

ALTER TABLE models RENAME models_old;

ALTER TABLE models_new RENAME models;
0
Mahedi Hasan

私はちょうど私自身の同様の問題を抱えて解決しました。私の場合の問題は、ft_min_Word_len変数を変更するために編集する必要のあるmy.iniファイルが、Windows 7ではデフォルトで非表示/保護されているディレクトリにあったことです。つまり、 "c:/ programdata/mysql/mysql server 5.7 "。

Windowsファイルエクスプローラーと検索では、フォルダーオプションに移動し、隠しファイル/フォルダー(および場合によっては保護されたオペレーティングシステムファイル-両方を実行)を表示するように指定するまで、この場所は表示されません。

最初に、Program Files/MySQL Server5.7でmy.cnfファイルを作成しました。しかし、サーバーを再起動したとき、ft_min_Word_len変数は変更されていませんでした。次に、エラーが発生するはずだとわかっているランダムなテキストを入力しましたが、サーバーは通常どおり起動しました。 MySQLクライアントシェルからのヘルプテキストで指定された場所の1つにあったにもかかわらず、MySQLがファイルを読み取っていなかったようです。

私の考えでは、MySQLサーバーはヘルプテキストで指定された順序で.cnf/.iniファイルの検索を開始しますが、有効なファイルが見つかると検索を停止します。単なる理論ですが、他の場所で構成ファイルを認識していなかったのは確かです。

新しいCSSファイルが以前の設定を上書きするCSSのようなものだと思いました。明らかにそうではありません。

とにかく、これが同じ問題に遭遇した他の人の助けになることを願っています。

0
greggb