2012-05-25 240 views
2

我對MySQL全文搜索功能有點新。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 .. 

現在我想在text_data搜索列值數據值爲'1244',amt爲'78'。那麼,如何可以使用兩個表達式與子句:

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') 

OR

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

OR

還有沒有其他辦法?

回答

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

請注意,你應該有ft_min_word_len設置爲1,這個工作(與4,amt78默認值甚至不會索引)

+0

非常感謝提供正確的解決方案 – Prakash