首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL (innoDB)搜索多个单词

问MySQL (innoDB)搜索多个单词
EN

Stack Overflow用户
提问于 2012-07-18 19:48:37
回答 1查看 1.1K关注 0票数 0

我运行的是MySQL版本5.1.57

我有一个HTML表单,用户可以在其中插入搜索字符串。我在这个字符串上创建一个$_SESSION,然后在MySQL查询中运行它。如下所示:

代码语言:javascript
复制
<?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全文索引的文章,但据我所知,它只适用于MyISAM表(?)。如何使用现有的环境搜索多个单词?

EN

回答 1

Stack Overflow用户

发布于 2012-07-18 20:37:10

我认为您应该将搜索到的字符串用空格(“")拆分,然后将每个片段插入到您的查询中,或者插入到其他查询中。例如:

$str = "word1 word2";

这样,您首先搜索整个字符串"word1 word2“,然后在数据库中搜索"word1”和"word2“。使用这个解决方案,您应该处理单词忽略列表,因为像"a,an,the,or,...“这样的单词。不应该去寻找...

我不确定有没有其他方法来处理innoDB表...最好的解决方案显然是使用“匹配对象”命令,但只有在MyISAM下才能使用全文索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11540652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档