根据搜索查询从数据库返回行


Returning rows from database based on search query

我有一个产品表与以下模式:

products (itemname VARCHAR(50), itemid INT(10));

示例记录如下(itemname, itemid):

  • 黑莓曲线3g(黑色),1
  • 三星ace, 3
  • 黑莓曲线3g(白色),2
  • 苹果iphone 4 32gb(黑色),4

现在假设用户在网站的搜索框中输入查询,并显示相应的结果。例如,如果用户输入blackberry,那么黑莓手机应该显示

我在寻找以下问题的答案:

  1. 如何将搜索文本与项目匹配?例如:user may在搜索框中输入blackberry,然后如何搜索?我应该搜索blackberry字作为itemname的子字符串吗上表的栏?
  2. 如果用户输入两个字,如:apple 32gb。现在如果我用上面提到的子字符串方法,那么它不会工作,因为表中没有apple 32gb作为子字符串的行。在这种情况下如何搜索?
  3. 如果用户输入一个非常通用的搜索文本,如:mobiles。在这种情况下,应该显示所有的手机。在这种情况下,匹配itemname作为子字符串也将不起作用。
  4. 用户可以输入搜索文本:apple 32gb black color。在这种情况下,应该显示32GB容量和黑色的苹果产品。

我知道实现100%正确的搜索是不可能的。我只是在寻找如何进行的提示。我正在使用PHP, MySQL, Apache。

这是什么类型的数据库,如果MySQL可以在字段上启用全文搜索,然后只需一个简单的查询就可以得到您期望的结果

对于许多单词搜索,我会这样做:

$searchArray = explode(" ", $searchString);
foreach ($searchArray as $word)
{
    //add an OR clause to your sql query like the following
    $query .= "OR itemname like %".$word."%";
}

其他问题要复杂得多,但我希望这对您有所帮助