2012-04-02 85 views
0

使用MySQL和/或PHP在另一个字符串中查找可能的子字符串的最佳方法是什么?用mysql查找另一个字符串中可能的子字符串

我有脚本去槽低电子邮件列表,并使用PHP进行评分,根据我的计算优先级进行分类和显示。棘手的部分是,我有我的数据库中的主题列表,我需要检查,我想从主题电子邮件主题与我的'主题'表匹配。

为了保持简单,我们假设一个主题是“LAST REMINDER FOR 2012 FIRST QUARTER DRAWS (OFFICIAL RELEASE).”,在我的数据库中我有一个匹配主题“first quarter draws”。找到这个记录最好的方法是什么?

是否有MySQL的这个功能;或者你会怎么做?我只能想到手动将主题行拆分为单词并针对每个单词运行查询,然后按照匹配度最高的ID进行排序;但对我来说似乎相当复杂,应该有更好的解决方案,或者已经用MySQL函数解决的问题。

我已经在这里看到了“类似题目的问题”这个标题,但是这并不能帮助我,因为他们认为我的子串是已知的。

回答

2

Like的情形应该解决这个问题:

SELECT * FROM table WHERE field LIKE '%first quarter draws%' 
+0

抱歉,这是错误的,并没有回答我的问题。 我知道基本的mysql sytax;然而,这里的主要问题是我不知道子串'第一节'(还)。我只有我的主题“最后提醒2012年第一季度平局(官方发布)”,以及一张有6000个记录的表格,可能或不可能(!)包含记录的“第一季度平局”。 我如何找到最佳匹配? – iHaveacomputer 2012-04-02 04:10:23

+0

对不起,我无法理解你的问题。重新阅读我认为你是全文匹配后,按相关性排序:http://devzone.zend.com/26/using-mysql-full-text-searching/你可以添加一个FULLTEXT索引到你的主题字段并将其与您的$主题进行比较。 – 2012-04-02 04:25:01

-1

试试这个:

if(substr_count(strtolower($subject), strtolower($topic)) > 0){ 
return true; 
} 
return false; 
+0

这真的没有必要。它只能在获取所有内容后才能完成,并且有一个函数:http://us3.php.net/manual/en/function.strpos.php – Navarr 2012-04-02 03:47:54

+0

是的,这也不会有帮助。看到我的问题:“...我已经看过”标题类似的问题“这个标题,但对我不了解,因为他们认为我的子字符串是已知的。” – iHaveacomputer 2012-04-02 04:12:36

相关问题