算了。估计这次回答没分。
创新互联拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕10多年,专业且经验丰富。10多年网站优化营销经验,我们已为成百上千中小企业提供了网站建设、网站设计解决方案,按需定制网站,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!
跟你聊聊所谓的智能搜索吧。
不用 like 实现你说的智能一些的搜索。首先你得做一套分词系统。就是把你那一句话分成若干个词。
比如“你是个非常牛逼的二傻子”这句话。你不能把“你是个”当成一个词吧。 智能一点的分词应该是把“你、非常、牛逼、傻子”分出来。
然后就开始涉及到一个权重问题了。就是 你分出来的这些词 到底你希望哪些符合条件的结果排在签名。很明显上面那句话 傻子的权重要高一些。其次是牛逼。。。
然后 根据权重结果匹配呈现出结果来。。。
基本上 搜索引擎都是这么干的。 分词---数据查询----权重排序----结果呈现。。。。
下面是首页显示数据表package中的内容,但是有个条件,显示在首页的内容还必须是 :字段status=0,且printing=0的数据才能在首页列表中显示出来。
页面上有一个“搜索”功能,输入条件后就会根据条件来进行查询。
一般的搜索的话,只要在首页显示列表方法index()中给一个:
?
$map=array();//初始化查询条件
$map=$this-_search();//调用查询方法
$total = $this-Model-where ($map)-count(); //这个主要是用来计算页面显示数据条数的
if ($total == 0) {
$_list = '';
} else {
$_list = $this-Model-where ($map)-limit( $post_data ['first'] . ',' . $post_data ['rows'] )-select();
}
然后,就是写一个_search():
protected function _search(){
$map = array ();
$post_data = I ( 'post.' );
if ($post_data ['packageid'] != '') {
$map ['packageid'] = array (
'like',
'%' . $post_data ['packageid'] . '%'
);
}
return $map;
}
最后,在设置的“搜索”菜单中,调用这个搜索方法。
但是,这个搜索的.同时,还要确保在字段status=0,且printing=0的数据中进行搜索。
这个限制条件该加在什么地方。各种尝试和查询后,才知道。限制条件直接加在SQL语句中就行了(如下红色的地方)。(我自己试的时候一直在如下蓝色的地方加条件,屡试屡败!)
$map=array();
$map=$this-_search();
$total = $this-Model-where ($map)-where(array('status' =0,'print_status'=0))-count();
if ($total == 0) {
$_list = '';
} else {
$_list = $this-Model-where ($map)-where(array('status' =0,'print_status'=0))-limit( $post_data ['first'] . ',' . $post_data ['rows'] )-select();
}
更多相关文章推荐:
通过from表单,将查询的关键词,通过 like 跟数据进行模糊查询对比\x0d\x0a从topics表中查询字段subject与传进来的参数'$_POST['topic']进行比较模糊查询\x0d\x0a设subject字段数据为:数学,英语,物理,化学,英文\x0d\x0a$subject=$_POST['topic']; \x0d\x0a$sql = "select * from topics where subject like '%" .$subject. "%'";\x0d\x0a$result = mysql_query($sql);\x0d\x0a若从表单提交的‘topic’值为“学”,得到的结果将是:数学,化学\x0d\x0a多个字段匹配查询:\x0d\x0a$sql = "select id,subject from topics where (id like '%" .$id. "%') or (name like '%" .$name. "%') or (subject like '%" .$subject. "%') order by id desc";\x0d\x0a结果依据字段id的顺序