我使用的是最新版本的MySQL 5.5。
我有一个全文索引,跨越专门为全文搜索生成的表中的多个列(数据库中的其他表使用innodb):
somedata_search
========
id
name
about
note
dislike
除了ID之外,我在所有列上都有全文索引。我可以使用:
运行全文搜索 SELECT * FROM account_search WHERE MATCH(name, about, note, dislike) AGAINST('mykeyword*' IN BOOLEAN MODE);
这一切都运行正常,但是有没有办法判断每一行匹配的哪一列?如果一行中的列之间存在匹配项,我很高兴只有第一列。
答案 0 :(得分:1)
我认为没有任何“原生”方式可以获得它,但无论如何都可以这样做。
我不确定这是否很快但它会返回正确的数据
select text_test.*,
match(name) against ('dude' in boolean mode) as name_match,
match(info) against ('dude' in boolean mode) as info_match
from text_test
where match(name, info) against ('dude' in boolean mode);