0

我正在使用最新版本的 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);

这一切都很好,但是有没有办法确定每一行的匹配来自哪一列?如果一行中有跨列匹配,我很高兴只有第一列。

4

1 回答 1

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);

http://sqlfiddle.com/#!2/5159c/1

于 2012-04-18T13:05:30.243 回答