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 ..

现在我想在 text_data 列中搜索 value 数据值为 '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')

或者

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)

请注意,您应该ft_min_word_len设置为 1 才能工作(默认值为 4,amt甚至78不会被索引)

于 2012-05-25T09:14:00.437 回答