mysql - 跨多列的全文索引中匹配的列

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

这一切都很好,但是有没有办法确定每行的匹配源自哪一列?如果连续的列之间存在匹配项,我很高兴只有第一列。

最佳答案

我认为没有任何“本地”方式来获取它,但无论如何都是可以做到的。

我不确定这是否快,但它会返回正确的数据

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/

相关文章:

arrays - 仅返回文本搜索匹配的数组元素

ruby-on-rails - Ruby:只列出 id 不包含在另一个表中的项目

MySQL分组连续出现

php - 将 select 子句的结果用于 MySQL 的 where 子句

search - 反转文件与签名文件

Mysql FULLTEXT 使用 GROUP BY 进行搜索,保留得分最高的行值

mysql - 如何获得所有最大列值的总和

MYSQL SUM 在应该为 0 时返回空白

python - pywinauto:占用多个应用程序窗口

python - 如何在Python中进行参数匹配、捕获