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