我在一个mysql表上查询自动补全功能,该表有许多类似标题的实例,通常是不同年份的东西,例如'2010 Chevrolet Lumina‘或'Chevrolet Lumina 2009’等。
我目前使用的查询是:
$result = mysql_query("SELECT * FROM products WHERE MATCH (name) AGAINST ('$mystring') LIMIT 10", $db);$mystring变量的构建方式如下:
$queryString = addslashes($_REQUEST['queryString']);
if(strlen($queryString) > 0) {
$array = explode(' ', $queryString);
foreach($array as $var){
$ctr++;
if($ctr == '1'){
$mystring = '"' . $var . '"';
}
else {
$mystring .= ' "' . $var . '"';
}
}
}我需要能够做的是以某种方式分组的东西,以便只有一个版本的非常相似的实际上显示在自动建议下拉列表中,为其他产品留出空间,雪佛兰在他们以及。目前,它正在展示所有10个位置,其中充满了相同的产品,不同的年份,选项等。
这应该会给你们中的一些有头脑的人一个很好的锻炼:)
发布于 2010-11-04 16:39:47
我认为最好的方法是在products表上创建一个新字段,类似于分类。所有模型都将以相同的分类输入(例如“雪佛兰”)。然后,您仍然可以根据名称进行匹配,但按分类进行分组。假设您使用的是MySQL,那么您可以稍微作弊,选择一些值并将其与您未按其分组的值进行匹配。从技术上讲,在SQL中,这会产生未定义的结果,许多SQL引擎甚至不会让您尝试这样做,但MySQL允许您这样做--它会返回或多或少匹配的随机样本。因此,例如,如果您执行了上述查询,并按分类分组,则只有一个模型(几乎是随机选取的)将显示在自动补全程序中。
https://stackoverflow.com/questions/4094919
复制相似问题