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