【问题标题】:Mysql find keywords in textMysql在文本中查找关键字
【发布时间】:2013-01-13 17:32:27
【问题描述】:

我有一个包含 10k 个关键字的 Mysql InnoDB 表,我想将它们与多个文本进行匹配。

有些关键字有几个词,我只想要完全匹配。

示例: 关键词 - 棕狐、懒猫、狗、狐狸、兔子

文本 - 敏捷的棕色狐狸跳过懒狗

我希望查询返回 - brown fox, dog, fox

【问题讨论】:

  • 我有 10k 个关键字。我不能一个一个去。
  • 你给出的例子与我所需要的相反。这个想法是像全文 SELECT * FROM TABLE WHERE MATCH(keywords) AGAINST('The quick brown fox jumps over the lazy dog');问题是该表是 InnoDB 并且不适用于全文,并且全文不只返回完全匹配。它也会返回部分匹配

标签: mysql string match keyword


【解决方案1】:

这里有一个想法:

SELECT keyword 
FROM Keywords
 JOIN (SELECT 'The quick brown fox jumps over the lazy dog' as col) k
   on k.col like Concat('%',keywords.keyword,'%')

还有SQL Fiddle

祝你好运。

【讨论】:

    【解决方案2】:
    SELECT * FROM tenKTable 
    WHERE 'The quick brown fox jumps over the lazy dog' LIKE CONCAT('%',keyword,'%')
    

    来源:MySQL SELECT query string matching

    【讨论】:

      【解决方案3】:

      接受的答案非常好。改进将是

      SELECT kw FROM keyword
      WHERE ' text ' LIKE CONCAT('% ',kw,' %')
      

      记得在文本前面加上空格。这样,您就可以完全避免部分匹配。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-31
        相关资源
        最近更新 更多