2

私は MySQL の全文検索機能に少し慣れていません。

MATCH()..AGAINST() FTS 機能の使用法を明確にしたいと思います。

テキスト型の列があり、複数の名前のペアの値と他のテキストが含まれているとします。一般的に、MySQL の FTS 機能は以下のコマンドで使用できることを理解しています。

select col from mytable where match(text_data) against('some word') limit 10;

しかし、次のような複数の単語を検索する必要があります。

select text_data from mytable;
==============================

abcd, xyax&iopp data=1244 amt=78 ..
abcd, xyax&iopp data=12xx amt=7x ..

ここで、値データ値が「1244」、amt が「78」の text_data 列を検索します。では、2 つの式を AGAINST 句として使用するにはどうすればよいでしょうか。

select col from mytable where match(text_data) against ('data=1244' and  'amt=78')

OR

select col from mytable where match(text_data) against ('data=1244') and match(text_data) against ('amt=78')

また

select col from mytable where match(text_data) against ('data 1244 amt 78') 

また

他の方法はありますか?

4

1 に答える 1

1
SELECT  col
FROM    mytable
WHERE   MATCH(text_data) AGAINST('+"data 1244" +"amt 78"' IN BOOLEAN MODE)

これを機能させるには 1 に設定する必要があることに注意してくださいft_min_word_len(デフォルト値は 4 で、amtインデックス78も作成されません) 。

于 2012-05-25T09:14:00.437 に答える