获取看起来像带有多个混合单词的字符串的记录

时间:2012-12-29 11:48:12

标签: mysql sql full-text-search string-matching

数据库类型:MySql

假设我的中有两行:

  

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

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

  

“Mark 昨天去影院

...我怎样才能进行查询以获得第一条记录? 可能还有许多其他情况,第一条记录将是我正在寻找的记录:

  

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

......等等。


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

修改:我知道有FULLTEXT index in MySql可能有助于实现这一目标。我也读过他们do not work with innoDB tables(我正在与之合作)。 (如果这是不可能的,我可以重新设计我的数据库,使这个表成为MyISAM)

编辑:正如eggyal在对此问题的第一条评论中所说,“v5.6”也支持 innoDB 表格。

修改:另一个例子是:

  

[1。] 天堂今天看起来很蓝
   [2。] 今天大火看起来很红

我希望通过假设获得第一条记录:

  

海洋今天看起来很蓝

...作为模式字符串。

(在这种情况下,第二条记录也会匹配,与第一条记录的相关性较低,因为它包含今天 $ >

1 个答案:

答案 0 :(得分:3)

您可以在查询中使用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)