我想在我的网站中添加搜索功能,可以搜索完整的网站(如用户个人资料,帖子等)
我在搜索页面上创建了标签(用户,帖子,评论),并在每个标签上点击我调用了每个模型的默认搜索()功能,它显示完整的记录。现在我陷入了特定的搜索状态,如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;'
),
));
?>
现在我想帮助从搜索框中获取价值,并且在每次搜索中我只能使关键字搜索不完整,我该怎么做?
答案 0 :(得分:4)
您可以查看第三方服务,例如google site search
但如果您想要一个自定义解决方案,它会变得相当复杂。其中一种方法是创建索引数据库表。该表的结构取决于它需要存储的内容。
这背后的概念是,任何时候将数据插入任何其他“可索引”表(用户配置文件,帖子等......),索引表中将创建一个索引,该索引将存储:
这样,当用户搜索时,您只需将查询与索引进行比较,然后返回结果。您甚至可以包含类型的过滤器(例如:用户可以选择要搜索的内容类型的下拉列表)