在跨越多列的全文索引中匹配的列

时间:2012-04-18 10:13:23

标签: mysql full-text-search matching full-text-indexing

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

这一切都运行正常,但是有没有办法判断每一行匹配的哪一列?如果一行中的列之间存在匹配项,我很高兴只有第一列。

1 个答案:

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

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