2012-03-09 16 views
0

私は、多くの行と多くの列を持たない表を持っています。私は3列の全文検索を行っています。部分一致で全文を検索するにはどうすればよいですか?

私のコードは、私が正しくABCDEFGH ... として存在している ABCDEFGH などの用語を検索することができます

$search_input = trim($_GET['s']); 
$search = mysql_real_escape_string($search_input); 
$search = '+'.str_replace(' ', '* +', $search).'*'; 

$sql = "SELECT * FROM table WHERE 
     MATCH(def, pqr, xyz) AGAINST ('$search' IN BOOLEAN MODE)"; 

$result = mysql_query($sql); 

...です。

しかし、私はテーブルエントリにABC-123のような存在なものであり、また、abcdefghsなどの用語ABC、などの検索用語で空のセットを受け付けております。 (これは上記の複数形であることに注意してください)

明らかに私は部分検索などを実装する必要があります。
しかし、どのようにこのような検索を実装しますか?ユーザーの入力に対してテーブル全体の検索を行うより良い方法はありますか?

私が間違っていることを言及してください。

EDIT:各単語の後に*を追加することで、今私も ABCDE を検索することですが、問題の上に残っています。

答えて

1

3文字の組み合わせの結果が得られないのですか?もしそうなら、あなたは(通常は3に設定されている)MySQLのインデックス長ここ

詳細情報を打つかもしれない - http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

+0

私はこのトラブルに直面していますようにはい、見えます。私はあなたが参照したページは、デフォルトは4文字3ではないと言います。そして、私はこの長さに触れることはできません。 –

+0

申し訳ありません。ドキュメントを見るには、confファイルの 'ft_min_word_len'オプションを設定すると役に立ちます。 – JohnP

関連する問題