【问题标题】:Column that matches in a fulltext index spanning multiple columns在跨多列的全文索引中匹配的列
【发布时间】:2012-04-29 17:45:41
【问题描述】:

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

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

【问题讨论】:

  • 如果您想检查每个列与某物的匹配,然后在四个不同的查询中执行,您想要实现的目标

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 2020-08-30
    • 2018-03-31
    • 2020-10-30
    • 2020-08-30
    • 1970-01-01
    • 2017-03-10
    • 2017-04-20
    相关资源
    最近更新 更多