0

我想在我的网站中添加搜索功能,以便能够搜索完整的网站(如用户资料、帖子等)

我在搜索页面上创建了选项卡(用户、帖子、评论),并在每个选项卡上单击我调用了每个模型的默认 Search() 函数,它正在显示完整的记录。现在我陷入了特定的搜索,比如如果用户输入了一些东西在搜索框中,只有三个选项卡应该显示在搜索框中具有该关键字的内容。

这是我的代码:

在我的 SiteController 中:

此控制器用于主搜索框main.php

public function actionSearch() {

           $model = new TblUserProfile;

        $this->render('search'
                ,  array('model'=>$model)

);


//        } 

        }

然后在配置文件控制器中:

public function actionProfileSearch() {


        $model = new TblUserProfile;


        $this->layout = 'null';
        $this->render('/tblUserProfile/profilesearch', array('model' => $model));
    }

然后在帖子和评论控制器中同样的事情!

这是我的搜索页面(站点/搜索):

<?php 
$this->widget('zii.widgets.jui.CJuiTabs', array(
    'tabs'=>array(
        'People'=>array('ajax'=>array('/tblUserProfile/profilesearch','view'=>'/tblUserProfile/profilesearch')),

         'Blogs'=> array('ajax'=>array('/tblPost/postsearch','view'=>'/tblPost/postsearch')),


        'Comments'=> array('ajax'=>array('/tblComments/commentsearch','view'=>'/tblComments/commentsearch','search'=>'omer')),
    ),
    'options'=>array(
        'collapsible'=>true,
        'selected'=>0,
    ),
    'htmlOptions'=>array(
        'style'=>'width:900px;'
    ),
));
?>

现在我需要帮助从搜索框中获取价值,并且在每次搜索中我只能使关键字搜索不完整,我该怎么做?

4

1 回答 1

4

您可以查看第三方服务,例如google 站点搜索

但是,如果您想要一个自定义解决方案,它可能会变得非常复杂。其中一种方法是创建索引数据库表。该表的结构将取决于它需要存储的内容。

这背后的概念是,任何时候将数据插入任何其他“可索引”表(用户配置文件、帖子等),都会在索引表中创建一个索引,该索引将存储:

  • 可搜索文本(用户搜索查询将与之比较的内容)
  • 内容的类型(用户个人资料/帖子等...)
  • 内容的 URL(或引用链接到相关内容的方法)

这样,当用户搜索时,您只需将查询与索引进行比较,然后返回结果。您甚至可以包括类型过滤器(例如:用户可以选择要搜索的内容类型的下拉菜单)

于 2012-11-12T09:55:49.990 回答