首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对自动补全功能的专门搜索查询优化

针对自动补全功能的专门搜索查询优化
EN

Stack Overflow用户
提问于 2010-11-04 16:31:03
回答 1查看 219关注 0票数 0

我在一个mysql表上查询自动补全功能,该表有许多类似标题的实例,通常是不同年份的东西,例如'2010 Chevrolet Lumina‘或'Chevrolet Lumina 2009’等。

我目前使用的查询是:

代码语言:javascript
复制
$result = mysql_query("SELECT * FROM products WHERE MATCH (name) AGAINST ('$mystring') LIMIT 10", $db);

$mystring变量的构建方式如下:

代码语言:javascript
复制
$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个位置,其中充满了相同的产品,不同的年份,选项等。

这应该会给你们中的一些有头脑的人一个很好的锻炼:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-04 16:39:47

我认为最好的方法是在products表上创建一个新字段,类似于分类。所有模型都将以相同的分类输入(例如“雪佛兰”)。然后,您仍然可以根据名称进行匹配,但按分类进行分组。假设您使用的是MySQL,那么您可以稍微作弊,选择一些值并将其与您未按其分组的值进行匹配。从技术上讲,在SQL中,这会产生未定义的结果,许多SQL引擎甚至不会让您尝试这样做,但MySQL允许您这样做--它会返回或多或少匹配的随机样本。因此,例如,如果您执行了上述查询,并按分类分组,则只有一个模型(几乎是随机选取的)将显示在自动补全程序中。

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

https://stackoverflow.com/questions/4094919

复制
相关文章

相似问题

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