2009-03-25 22 views
1

PHPを使用してMySQLテーブル(テキストタイプ)の2つのフィールドで検索を実行しようとしています。MySQLとPHPのフルテキスト検索が機能しません

SELECT * FROM content_items WHERE MATCH (content,name) AGAINST ('".urldecode($_REQUEST['term'])."' IN BOOLEAN MODE) 

私が検索しても何の結果も得られません(クエリを静的にしようとしましたが、まだ動作しませんでした)。私は両方のフィールドにFulltextインデックスを持っています。

これはどうしてですか?

おかげで、

ロイ

p.s

検索が

+0

テーブルには何行ありますか? –

答えて

1

に一致しないであろうことは、インデックスの問題でした。それらを再構築することでこれが解決されました。

3

を(たとえ短いものを)刺し傷の任意の長さに合わせなければならないSQL文が理にかなっています。私はこの問題はここにあると思う:

urldecode($_REQUEST['term']) 

ノートはスーパーグローバル$ _GETと$ _REQUEST が既に復号化され

警告この

に関するPHPマニュアルにあります。 $ _GETまたは$ _REQUESTの要素にurldecode() を使用すると、予期しない危険な結果が生じる可能性があります。

乾杯、

マーク

+0

その点については、エスケープ入力について学ぶことが賢明でしょう。 ;-) – Till

2

あなたは、フルテキスト検索に関連したMySQLのconfigsをチェックすることをお勧めします

(クエリがエラーを投げていないと仮定した場合)。 例えば、4つの文字の下のデフォルトの用語では何も

mysql> show variables like 'ft_%'; 
+--------------------------+----------------+ 
| Variable_name   | Value   | 
+--------------------------+----------------+ 
| ft_boolean_syntax  | + -><()~*:""&| | 
| ft_max_word_len   | 84    | 
| ft_min_word_len   | 4    | 
| ft_query_expansion_limit | 20    | 
| ft_stopword_file   | (built-in)  | 
+--------------------------+----------------+ 
5 rows in set (0.00 sec) 
+0

+1あなたはちょうど私のお尻を救った – Draemon

関連する問題