我正在使用最新版本的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);
http://sqlfiddle.com/#!2/5159c/1
关于mysql - 与全文索引匹配的列,跨多个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10207281/