Mysql 获取看起来像包含多个混合词的字符串的记录

Mysql 获取看起来像包含多个混合词的字符串的记录,mysql,sql,full-text-search,string-matching,Mysql,Sql,Full Text Search,String Matching,数据库类型:MySql 假设在我的表中有两行类似的内容: [1.]“彼得昨天去了公园”[2.]“彼得要去公园 明天” …假设我将其作为模式字符串: “马克昨天去看电影了” …如何查询以获取第一条记录? 在许多其他情况下,第一条记录可能就是我要查找的记录: -“伦纳德昨晚去了图书馆” -“杰克去年去了伦敦” ……等等 注意:我没有显示表结构,因为真正的问题是我必须查找的条件。但是,我们可以假设该表名为table,有两个字段(id和string) 编辑:我知道有一些方法可能有助于完成这项工作。我也

数据库类型:MySql

假设在我的表中有两行类似的内容:

[1.]“彼得昨天去了公园”
[2.]“彼得要去公园 明天”

…假设我将其作为模式字符串:

“马克昨天去看电影了”

…如何查询以获取第一条记录? 在许多其他情况下,第一条记录可能就是我要查找的记录:

-“伦纳德昨晚去了图书馆”
-“杰克去年去了伦敦”

……等等


注意:我没有显示表结构,因为真正的问题是我必须查找的条件。但是,我们可以假设该表名为table,有两个字段(id和string)

编辑:我知道有一些方法可能有助于完成这项工作。我也读过它们(我正在与之合作)。(如果这是不可能的,我可以重新设计我的DB,使这个表成为MyISAM)

Edit:正如eggyal在对这个问题的第一条评论中所说,“v5.6”也支持innoDB

编辑:另一个例子是:

[1.]天堂今天看起来很蓝
今天的火看起来是红色的

我想通过假设得到第一条记录:

海洋今天看起来很蓝

…作为模式字符串


(在本例中,第二条记录也是一个匹配项,与第一条记录相比相关性较小,因为它包含looks$today

您可以在查询中使用
like
。见以下示例:

mysql> select * from statements;
+----------------------------------+
| sentence                         |
+----------------------------------+
| Peter went to the park yesterday |
| Mark went to the cinema          |
| Peter is going the park tomorrow |
| Mark went to the park yesterday  |
| Mark went to the park tommorow   |
+----------------------------------+
5 rows in set (0.00 sec)

mysql> select * from statements where sentence like '% went to the park yesterday';
+----------------------------------+
| sentence                         |
+----------------------------------+
| Peter went to the park yesterday |
| Mark went to the park yesterday  |
+----------------------------------+
2 rows in set (0.00 sec)

mysql> select * from statements where sentence like '% went to the park %';
+----------------------------------+
| sentence                         |
+----------------------------------+
| Peter went to the park yesterday |
| Mark went to the park yesterday  |
| Mark went to the park tommorow   |
+----------------------------------+
3 rows in set (0.00 sec)

从您最近的编辑中,听起来好像全文搜索正是您所追求的:例如,
WHERE MATCH(myColumn)反对('Mark昨天去电影院了')>0 ORDER BY MATCH(myColumn)反对('Mark昨天去电影院了')DESC
。是的,相关性分数
>0
表示至少存在某种相关性<代码>全文搜索不区分大小写。多多少少的相关性将来自模式和字段之间的多多少少匹配。好的,工作很好。非常感谢(现在我可以投票支持你了)第三个例子应该正好给出ased的目的+1.