MySQL Fulltext搜索属性

时间:2012-05-25 09:11:20

标签: mysql sql

我对MySQL全文搜索功能有点新鲜。

我想澄清MATCH()的一些用法.. AGAINST()FTS功能。

如果我们有一个类型为text的列,并且包含多个名称对值以及其他文本。一般来说,我理解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'。那么如何使用两个表达式是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')

OR

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

OR

还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

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

请注意,您应该将ft_min_word_len设置为1才能生效(默认值为4,amt78甚至无法编入索引)