自动完成功能的专用搜索查询细化

时间:2010-11-04 08:31:03

标签: php mysql

我正在查询mysql表上的自动完成功能,该表有许多类似标题的实例,通常是不同年份的事情,例如'2010 Chevrolet Lumina'或'Chevrolet Lumina 2009'等。

我目前使用的查询是:

$result = mysql_query("SELECT * FROM products WHERE MATCH (name) AGAINST ('$mystring') LIMIT 10", $db);

$ mystring变量构建为folows:

$queryString = addslashes($_REQUEST['queryString']);
if(strlen($queryString) > 0) {
  $array = explode(' ',  $queryString);
  foreach($array as $var){
    $ctr++;
    if($ctr == '1'){
      $mystring = '"' . $var . '"';
    }
    else {
      $mystring .= ' "' . $var . '"';
    }
  }
}

我需要做的是以某种方式组合事物,因此在autosuggest下拉列表中只有一个非常相似的版本实际显示,为其他产品留下了雪佛兰的空间。目前,它显示所有10个地点都填充了相同的产品,具有不同的年份,选项等。

这个应该给你们一些brainiacs一个很好的锻炼:)

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是在products表上创建一个新字段,例如 classification 。所有模型都将以相同的分类输入(例如“Chevrolet”)。然后你可以匹配名称,但GROUP BY 分类。假设您正在使用MySQL,您可以稍微作弊并选择值并匹配您未分组的值。从技术上来说,这会产生不确定的结果,许多SQL引擎甚至不会让你尝试这样做,但MySQL允许你这样做 - 它返回一个或多或少的随机样本匹配。因此,例如,如果您按照分类进行了上述查询,则只有一个模型(几乎随机选取)将显示在自动完成程序中。