选择列中出现两个单词的行

时间:2016-06-03 11:36:25

标签: php mysql

我有一张桌子"评论"

ID  Comment
1   This is a test.
2   Hello.
3   I am a test.
4   How are you?

在文本文件中,我读了以下字符串: "今天我要进行测试。"

我想要做的是选择包含我的字符串中至少两个单词的行。在这种情况下,我想选择第1行和第3行。

我尝试使用FULLTEXT搜索,但它输出的行甚至只有一个单词外观。我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

在SQL中没有一种很好的方法可以做到这一点。一种方法是解析字符串,然后计算匹配数:

where ((concat(' ', comment, ' ') like '% Today %') +
       (concat(' ', comment, ' ') like '% I %') +
       (concat(' ', comment, ' ') like '% am %') +
       (concat(' ', comment, ' ') like '% going %') +
       (concat(' ', comment, ' ') like '% to %') +
       (concat(' ', comment, ' ') like '% run %') +
       (concat(' ', comment, ' ') like '% a %') +
       (concat(' ', comment, ' ') like '% test %')
      ) >= 2

使用布尔搜索功能,您可以使用全文搜索执行类似操作。但请注意,全文搜索具有最小字长和停用词列表。这样可以消除示例字符串中的几乎所有单词。