【问题标题】:MySQL (innoDB) PHP search multiple wordsMySQL (innoDB) PHP 搜索多个单词
【发布时间】:2012-07-18 11:48:37
【问题描述】:

我正在运行 MySQL 5.1.57 版

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

<?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 表(?)。如何使用我拥有的环境搜索多个单词?

【问题讨论】:

标签: php mysql full-text-search innodb


【解决方案1】:

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

$str = "word1 word2";

您首先搜索整个字符串“word1 word2”,然后在数据库中搜索“word1”和“word2”。 使用此解决方案,您应该处理一个单词忽略列表,因为“a, an, the, or, ...”之类的单词不应该是 seek ...

我不确定innoDB 表是否有其他方法......最好的解决方案显然是使用“匹配”命令,但它仅适用于 MyISAM 下的全文索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多