PHP / MYSQL匹配关键字的句子?

时间:2017-10-17 03:00:43

标签: php mysql

我的文字可以是255个字符长。 我有一个包含关键字的数据库。 有没有办法在PHP或MYSQL中测试句子才能找到匹配的关键字? (有点像StackOverflow在输入问题后会建议标签)

例如,文字是:

  

纽约时报:寻找突发新闻,多媒体,评论&意见   华盛顿,商业,体育,电影,旅游,书籍,工作。

并说我的mysql DB包含newspaper, news, book.

我不知道从哪里开始......最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我知道你想要与fulltext indexing functions相反。您的数据库包含关键字,而不是要搜索的文本正文。

所以它无法使用MATCH () AGAINST()。这会搜索数据库中的关键字。

您可以将数据库中的关键字提取到PHP脚本中,然后使用PHP字符串函数将关键字与文本进行比较。

$stmt = $pdo->query("SELECT word FROM keywords");
while ($row = $stmt->fetchAll()) {
  if (stripos($text, $row["word"])) {
    $found = true;
    break;
  }
}

或者

$stmt = $pdo->query("SELECT GROUP_CONCAT(word SEPARATOR '|') AS pat FROM keywords");
$row = $stmt->fetch();
if (preg_match("/{$row['pat']}/i", $text)) {
    $found = true;
}