我对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
还有其他方法吗?
答案 0 :(得分: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
甚至无法编入索引)