2012-05-25 191 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