我使用的是最新版本的 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);
这一切都很好,但是有没有办法确定每行的匹配源自哪一列?如果连续的列之间存在匹配项,我很高兴只有第一列。
最佳答案
我认为没有任何“本地”方式来获取它,但无论如何都是可以做到的。
我不确定这是否快,但它会返回正确的数据
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);
关于mysql - 跨多列的全文索引中匹配的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207281/