Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP、MYSQL、JSOn社交网站快速搜索功能提示_Php_Jquery_Mysql_Json - Fatal编程技术网

PHP、MYSQL、JSOn社交网站快速搜索功能提示

PHP、MYSQL、JSOn社交网站快速搜索功能提示,php,jquery,mysql,json,Php,Jquery,Mysql,Json,嗨,我正在开发社交网站,需要一个建议。我使用codeignitor框架,php作为核心语言,jQuery作为客户端脚本 现在我想在网站上实现用户搜索功能,用户可以在其中搜索其他用户 如果我在php中使用分页,它会有点慢,性能也不快,即使数据库很大,它也会更慢 所以我尝试的是,我对前1000人进行了查询,并使用json编码,使用这个插件一次显示前10个结果 有没有人可以帮助我了解我需要遵循的所有内容,包括技术、提示、查询、mysql数据库等 这是我当前在模型中的函数 function se

嗨,我正在开发社交网站,需要一个建议。我使用codeignitor框架,php作为核心语言,jQuery作为客户端脚本

现在我想在网站上实现用户搜索功能,用户可以在其中搜索其他用户

如果我在php中使用分页,它会有点慢,性能也不快,即使数据库很大,它也会更慢

所以我尝试的是,我对前1000人进行了查询,并使用json编码,使用这个插件一次显示前10个结果

有没有人可以帮助我了解我需要遵循的所有内容,包括技术、提示、查询、mysql数据库等

这是我当前在模型中的函数

    function search_user($cntry,$male,$female,$age_min,$age_max){

               $this->db->select('user_profiles.user_id,user_profiles.first_name,
               user_profiles.birthday,user_profiles.gender,user_profiles.picture,
               user_profiles.last_active,location.city,location.country');

     $this->db->from('user_profiles');

     $this->db->join('location', 'user_profiles.user_id = location.user_id');

     $this->db->limit(800);


    // Search condition :::: Country 

    if($cntry){
    $this->db->like('location.country',$cntry, 'both');
    }

    // Search condition :::: Male or Female 

     if($male==1 && $female==0) {  $g='Male'; $this->db->like('user_profiles.gender',$g, 'both');  }

     if($male==0 && $female==1) {  $g='Female'; $this->db->like('user_profiles.gender',$g, 'both');  }

     // Search condition :::: Age range
     if($age_min && !$age_max){

        $this->db->where('(YEAR(NOW())-YEAR(user_profiles.birthday)) >= ', $age_min);
     }


     if($age_min && $age_max){

        $this->db->where('(YEAR(NOW())-YEAR(user_profiles.birthday)) >= ', $age_min); 
        $this->db->where('(YEAR(NOW())-YEAR(user_profiles.birthday)) <= ', $age_max); 
     }


     $this->db->order_by("user_profiles.last_active", "desc"); 
     $query = $this->db->get();


     $data=array();
     foreach ($query->result() as $row){     
     $row->last_active=$this->online_status($row->last_active);
     $row->birthday=$this->birthday($row->birthday);
     $data[]=$row;
     }


    if ($query->num_rows() > 0)
    {
    return $data;
    }
    else
    {
    $data = array(
                'result' =>'404'
                 );
    return $data; 
    }


}
函数搜索用户($cntry、$male、$femal、$age\u min、$age\u max){
$this->db->select('user\u profiles.user\u id,user\u profiles.first\u name,
用户档案。生日,用户档案。性别,用户档案。图片,
用户_profiles.last_active,location.city,location.country');
$this->db->from('user_profiles');
$this->db->join('location','user\u profiles.user\u id=location.user\u id');
$this->db->limit(800);
//搜索条件:::国家/地区
如果($cntry){
$this->db->like('location.country',$cntry,'both');
}
//搜索条件:::男或女
如果($male==1&&$female==0){$g='male';$this->db->like('user_profiles.gender',$g'both');}
如果($male==0&&$female==1){$g='female';$this->db->like('user_profiles.gender',$g'both');}
//搜索条件:::年龄范围
如果($age\u min&!$age\u max){
$this->db->where('(YEAR(NOW())-YEAR(user_profiles.birth))>=',$age\u min);
}
如果($age\u min&$age\u max){
$this->db->where('(YEAR(NOW())-YEAR(user_profiles.birth))>=',$age\u min);

$this->db->where('(YEAR(NOW())-YEAR(user_profiles.birth))有许多因素可能导致此过程缓慢。我们需要解决以下问题:

  • 您正在数据库中搜索哪些列
  • 这些列有索引吗
  • 您的查询是什么样子的?是否只返回必要的列
  • 您希望以多快的速度显示结果?立即显示为用户类型,或在用户单击“搜索”后显示
  • 如何返回结果
  • 如何显示结果
通常,您可以在几毫秒内搜索非常大的数据集——因此,我怀疑,只要设置正确,数据库就是问题所在

好吧,尽管如此……

如果您有一个非常大的社交网络,我建议您实现如下内容。这是一个搜索索引,可以很容易地实现到CodeIgniter中:


您可以将您的用户、他们的个人资料数据、帖子、评论等添加到索引中,并使用功能强大的语言处理查询语言进行搜索,然后以您希望的任何格式非常快速地返回结果。这很容易变成“实时”使用ajax和json进行搜索。

有许多因素可能导致此过程缓慢。我们需要解决以下问题:

  • 您正在数据库中搜索哪些列
  • 这些列有索引吗
  • 您的查询是什么样子的?是否只返回必要的列
  • 您希望以多快的速度显示结果?立即显示为用户类型,或在用户单击“搜索”后显示
  • 如何返回结果
  • 如何显示结果
通常,您可以在几毫秒内搜索非常大的数据集——因此,我怀疑,只要设置正确,数据库就是问题所在

好吧,尽管如此……

如果您有一个非常大的社交网络,我建议您实现如下内容。这是一个搜索索引,可以很容易地实现到CodeIgniter中:


您可以将您的用户、他们的个人资料数据、帖子、评论等添加到索引中,并使用功能强大的语言处理查询语言进行搜索,然后以您希望的任何格式非常快速地返回结果。这很容易变成“实时”使用ajax和json进行搜索。

要求包含最少数量的字符并对查询进行限制!如果我使用此插件限制查询,例如50,则不会显示超过50个的结果作为搜索结果。要求包含最少数量的字符并对查询进行限制!如果我将限制查询使用此插件,例如50,它将不会显示超过50的结果作为搜索结果。嗨,斯沃金斯,谢谢你回答我的问题。这些提示对我真的很有帮助。以下是你的问题的答案…我正在搜索用户id、用户名、名字、图片、生日、性别和在线状态。而且,不,我的表没有索引,我只使用user_id作为主键。我只返回指定的列。我希望在用户登陆页面后立即重新搜索,然后单击并更改输入。我需要输出结果以显示用户的配置文件和基本信息。你能提供你的查询吗?你在使用mysql吗?我在我的主要问题中编辑查询。这是一个实时网站,你可以跟踪每个用户性能如果您有时间,我将感谢用户:demo@demo.com和Pass:12345能否打开评测-$this->output->enable_profiler(TRUE);在controllerOK中,很抱歉延迟。我刚刚查看了您的页面。我认为这里没有太大问题。您的jquery插件使用在处搜索的结果对结果进行分页(这非常快,因此没有问题)。我认为您的查询非常好,尽管我可能会在那里进行一些优化(对男性/女性使用
like
似乎有些过分了)。无论如何,只要有几个搜索功能选项,我想你就可以了