首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个单词的PHP搜索

问使用多个单词的PHP搜索
EN

Stack Overflow用户
提问于 2011-11-04 23:57:21
回答 3查看 1.8K关注 0票数 1

我正在尝试创建一个搜索功能,用户可以在其中输入两个单词到文本字段,它将拆分单词并构造一个MySQL查询。

这就是我到目前为止所拥有的。

代码语言:javascript
复制
$search     = mysql_real_escape_string( $_POST['text_field']);
$search     = explode(" ", $search);

foreach($search as $word)
{
    $where = "";
    $where      .= "product_code LIKE '%". $word ."%'";
    $where      .= "OR description LIKE '%". $word ."%'";

    $query      = "SELECT * FROM customers WHERE $where";
    $result     = mysql_query($query) or die();

    if(mysql_num_rows($result))
    {
        while($row = mysql_fetch_assoc($result))
        {
            $customer['value']  = $row['id'];
            $customer['label']  = "{$row['id']}, {$row['name']} {$row['age']}";
            $matches[]          = $customer;
        }
    }
    else
    {
        $customer['value']  = "";
        $customer['label']  = "No matches found.";
        $matches[]          = $customer;
    }
}

$matches = array_slice($matches, 0, 5); //return only 5 results

它构造并运行查询,但返回有趣的结果。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2011-11-05 00:00:54

  1. MySQL有一个叫做LIMIT的东西,所以你不需要最后一行。
  2. 使用全文搜索:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html -它更快更优雅的
票数 1
EN

Stack Overflow用户

发布于 2011-11-05 00:13:20

如果您的数据库采用MyISAM表格式,则可以对Sn0opy已经提到的感兴趣的列进行全文搜索

我个人认为,如果你真的想创建一个优秀的搜索引擎,使用mySQL (http://sphinxsearch.com/)或Solr (http://lucene.apache.org/solr/)就可以了。

它们可能都有一个学习曲线,但结果是专业的。

票数 0
EN

Stack Overflow用户

发布于 2011-11-05 00:17:08

还有比“有趣的结果”更具体的东西吗?即兴有几种可能性,但这真的取决于返回的结果。我的PHP有点生疏了,所以如果我的大脑抛出了一些java规则,我会在前面道歉,但第一眼看起来……

将该数组命名为$search以外的其他名称。这可能不是问题所在,但是由explode()创建的数组带有要分解的字符串的名称,这看起来很奇怪。尝试类似$searched = explode(“",$search);的命令,然后在随后的foreach()循环中使用$searched。

如果用户只输入一个搜索词怎么办?如果$text_field中没有空格,则explode将返回一个空数组,这将彻底提升您的查询。在分解$search之前,至少应该验证$text_field中是否有空格。同样,如果用户输入两个搜索词,但其中一个搜索词是由空格分隔的两个单词,该怎么办?同样,您将获得“有趣的结果”,因为您将获得您不想要的结果以及重复的结果,因为查询将自身扩展到一个术语中的两个单词。

如果不知道你所说的“有趣的结果”是什么意思,就真的很难解决这个问题。

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

https://stackoverflow.com/questions/8012133

复制
相关文章

相似问题

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