完整网站的搜索功能 - yii

时间:2012-11-12 08:49:21

标签: yii

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

我在搜索页面上创建了标签(用户,帖子,评论),并在每个标签上点击我调用了每个模型的默认搜索()功能,它显示完整的记录。现在我陷入了特定的搜索状态,如If用户在搜索框中输入内容,因此只有三个选项卡才会显示从搜索框中显示该关键字的内容。

这是我的代码:

在我的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;'
    ),
));
?>

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

1 个答案:

答案 0 :(得分:4)

您可以查看第三方服务,例如google site search

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

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

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

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