2011-12-11 17 views
2

MySQLテーブルがMATCH (col) AGAINST ('')クエリの結果を返していません。MySQLのフルテキスト検索が一致しません

表は単純です:

id | url | fullTextIndex 

そして、私のクエリは

SELECT *, Match(fullTextIndex) AGAINST ("7f7f7f807f8080807f8080807f7f7f807c828888808a86967e8b858d7f89838a76829e958f7badb68084a3a38384899077848b877f799f9c85799fa2827d8c8a ") FROM Pictures; 

最後の列、マッチ、私は上記の文字列があるという事実を知って、除いて常に0です。いずれかの値に逐語的に含まれています。

  • 文字列のみ、その行にある(それは、行の50%以上ではないので、無視されるべきではない):

    出来ることに注意します。

  • これは、このクエリはないかもしれない、なぜ列がbigText列
  • 私はINSTRを使用する場合、私は(正しいです)値1を取得

任意のアイデアです全値

  • ではありませんワーキング?

  • 答えて

    4

    指数化のために考えられた単語の長さ(設定可能)上限があるようです:

    http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_max_word_len

    あなたはそれは私に84を返しSHOW VARIABLES LIKE "ft_max_word_len";

    と現在の値を確認することができますサーバー、文字列は128文字です。

    推奨修正:

    1. あなたのmy.cnfファイルに次の行を追加します。ft_max_word_len=128(または任意の最大長さあなたが必要)

    2. MySQLのウェブサイト上でアドバイスとしてあなたのインデックスを再構築します。REPAIR TABLE tbl_name QUICK;

    +0

    これを機能させるための他の解決策はありますか?それは私が信じる問題ですが、私のホストは私にこれらの変数を変更させません。 : – Ktash

    +0

    私は恐れていません: 'ft_max_word_len'は動的変数ではないので、サーバ設定で指定する必要があります!アプリケーションの変更により、この制限を回避できますか? – Benjamin

    +1

    残念ながらそれはうまくいきません。画像比較のために使用している指紋、実際にはそれを小さくしたり、分割したりすることはできません。別のサーバーをセットアップする必要があります。ありがとう:) – Ktash

    関連する問題