MySQL(innoDB)PHP搜索多个单词


MySQL (innoDB) PHP search multiple words

我正在运行MySQL 5.1.57 版本

我有一个HTML表单,用户可以在其中插入搜索字符串。我在这个字符串上创建了一个$_SESSION,然后在MySQL查询中运行它。类似这样的东西:

<?php
  $sql = mysql_query ("SELECT 
                        s.student_firstname, s.student_lastname 
                      FROM students s 
                      WHERE (
                             s.student_firstname LIKE '%$searchstring%' OR
                             s.student_lastname LIKE '%$searchstring%
                             )
                      AND s.isActive = '1' "); 
?>

问题是当用户正在搜索多个单词时。然后我的查询失败了,因为它试图将字符串与任一列中的值进行匹配。

我读过一些关于MySQL FULLTEXT索引的文章,但据我所知,它只适用于MyISAM表(?)。我如何能够使用现有环境搜索多个单词?

我认为您应该在空格(")上拆分搜索到的字符串,并将每个片段插入您的查询或另一个查询中。例如:

$str="word1 word2";

这样,您首先搜索整个字符串"word1-word2",然后在数据库中搜索"word1"answers"word2"。有了这个解决方案,你应该处理一个单词忽略列表,因为像"a,an,the,or,…"这样的单词不应该被搜索。。。

我不确定innoDB表还有其他方法。。。最好的解决方案显然是使用"match-artion"命令,但它只能在MyISAM下使用全文索引。