我已经搜索了类似的问题,这些问题得到了解答并帮助了我,但我无法找到。所以,我的问题是,如何编写mysql查询来从DB中提取句子,其中包含从另一个句子生成的关键字,如下所示:
$tyrsena = "php statement for clause";
$ques = "SELECT * FROM question WHERE title IN '$tyrsena'";
$re = mysql_query($ques)or die(mysql_error());
while ($da = mysql_fetch_assoc($re)){
$sugg = $da['title'];
echo $sugg;
}
所以$tyrsena
是我需要生成关键字的句子,我希望匹配question
表中与这些关键字匹配的标题。
我提出的代码不起作用,只有当它的100%相同时才匹配它,我只是想象它想要达到的目的。谢谢你们:)
答案 0 :(得分:6)
首先,你需要在表上创建一个“FULLTEXT”索引并在查询中使用MATCH()函数。
StackOverflow会搜索以下两个标记,并仔细阅读与此相关的问题和答案:
此外,您必须将源语句标记为单词列表,以便适合插入查询。天真的策略是在空格上进行拆分,并且对于每个结果的术语,剥去任何拖尾标点并将其全部转换为小写。 (例如,这保留了“时钟”)。您也可能剥离“'s”(撇号“s”)和“不”的任何实例以及类似的常见收缩。 (一种不那么天真的方法可以做到stemming。
通常情况下,你也会过滤掉任何“停用词”(英语句子中常见的词语在关键词搜索中具有任何价值:of,a,an,the,by,for,in,it, ......等等(您应该可以通过简单的网络搜索轻松找到两三百个推荐英语stop words的列表)。(有些列在维基百科文章的底部。
答案 1 :(得分:1)
尝试:
$tyrsena = "php statement for clause";
$tyrsena = explode(' ', $tyrsena);
$tyrsena = implode("','", $tyrsena);
$ques = "SELECT * FROM question WHERE title IN '$tyrsena'";
或更快:
$tyrsena = "php statement for clause";
$tyrsena = str_replace(" ", "','", $tyrsena);