简单修改一下v9默认的搜索功能,可以不按模型搜索全站内容
下面是被修改后的search模块中的index.php文件

<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('form','',0);
pc_base::load_sys_class('format','',0);
class index {
function __construct() {
$this->db = pc_base::load_model('search_model');
$this->content_db = pc_base::load_model('content_model');
} /**
* 关键词搜索
*/
public function init() {
//获取siteid
$siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1;
$SEO = seo($siteid); //搜索配置
$search_setting = getcache('search');
$setting = $search_setting[$siteid]; $search_model = getcache('search_model_'.$siteid);
$type_module = getcache('type_module_'.$siteid); if(isset($_GET['q'])) {
if(trim($_GET['q'])=='') {
header('Location: '.APP_PATH.'index.php?m=search');exit;
}
$typeid = empty($_GET['typeid']) ? 0 : intval($_GET['typeid']);
$time = empty($_GET['time']) || !in_array($_GET['time'],array('all','day','month','year','week')) ? 'all' : trim($_GET['time']);
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$pagesize = 10;
$q = safe_replace(trim($_GET['q']));
$q = new_html_special_chars(strip_tags($q));
$q = str_replace('%', '', $q); //过滤'%',用户全文搜索
$search_q = $q; //搜索原内容 $sql_time = $sql_tid = '';
if($typeid) $sql_tid = ' AND typeid = '.$typeid;
//按时间搜索
if($time == 'day') {
$search_time = SYS_TIME - 86400;
$sql_time = ' AND adddate > '.$search_time;
} elseif($time == 'week') {
$search_time = SYS_TIME - 604800;
$sql_time = ' AND adddate > '.$search_time;
} elseif($time == 'month') {
$search_time = SYS_TIME - 2592000;
$sql_time = ' AND adddate > '.$search_time;
} elseif($time == 'year') {
$search_time = SYS_TIME - 31536000;
$sql_time = ' AND adddate > '.$search_time;
} else {
$search_time = 0;
$sql_time = '';
}
if($page==1 && !$setting['sphinxenable']) {
//精确搜索
$commend = $this->db->get_one("`siteid`= '$siteid' $sql_tid $sql_time AND `data` like '%$q%'");
} else {
$commend = '';
}
//如果开启sphinx
if($setting['sphinxenable']) {
$sphinx = pc_base::load_app_class('search_interface', '', 0);
$sphinx = new search_interface(); $offset = $pagesize*($page-1);
$res = $sphinx->search($q, array($siteid), array($typeid), array($search_time, SYS_TIME), $offset, $pagesize, '@weight desc');
$totalnums = $res['total'];
//如果结果不为空
if(!empty($res['matches'])) {
$result = $res['matches'];
}
} else { $sql = "`siteid`= '$siteid' $sql_tid $sql_time AND `data` like '%$q%'"; $result = $this->db->listinfo($sql, 'searchid DESC', $page, 10);
}
var_dump($result);
//如果结果不为空
if(!empty($result) || !empty($commend['id'])) {
foreach($result as $_v) {
if($_v['typeid']) $sids[$_v['typeid']][] = $_v['id'];
} if(!empty($commend['id'])) {
if($commend['typeid']) $sids[$commend['typeid']][] = $commend['id'];
}
$model_type_cache = getcache('type_model_'.$siteid,'search');
$model_type_cache = array_flip($model_type_cache);
$data = array();
foreach($sids as $_k=>$_val) {
$tid = $_k;
$ids = array_unique($_val); $where = to_sqls($ids, '', 'id');
//获取模型id
$modelid = $model_type_cache[$tid]; //是否读取其他模块接口
if($modelid) {
$this->content_db->set_model($modelid); /**
* 如果表名为空,则为黄页模型
*/
if(empty($this->content_db->model_tablename)) {
$this->content_db = pc_base::load_model('yp_content_model');
$this->content_db->set_model($modelid); }
$datas = $this->content_db->select($where, '*');
}
$data = array_merge($data,$datas);
}
$pages = $this->db->pages;
$totalnums = $this->db->number; //如果分词结果为空
if(!empty($segment_q)) {
$replace = explode(' ', $segment_q);
foreach($replace as $replace_arr_v) {
$replace_arr[] = '<font color=red>'.$replace_arr_v.'</font>';
}
foreach($data as $_k=>$_v) {
$data[$_k]['title'] = str_replace($replace, $replace_arr, $_v['title']);
$data[$_k]['description'] = str_replace($replace, $replace_arr, $_v['description']);
}
} else {
foreach($data as $_k=>$_v) {
$data[$_k]['title'] = str_replace($q, '<font color=red>'.$q.'</font>', $_v['title']);
$data[$_k]['description'] = str_replace($q, '<font color=red>'.$q.'</font>', $_v['description']);
}
}
}
$execute_time = execute_time();
$pages = isset($pages) ? $pages : '';
$totalnums = isset($totalnums) ? $totalnums : 0;
$data = isset($data) ? $data : ''; include template('search','list');
} else {
include template('search','index');
}
} public function public_get_suggest_keyword() {
$url = $_GET['url'].'&q='.$_GET['q'];
$trust_url = array('c8430fcf851e85818b546addf5bc4dd3');
$urm_md5 = md5($url);
if (!in_array($urm_md5, $trust_url)) exit; $res = @file_get_contents($url);
if(CHARSET != 'gbk') {
$res = iconv('gbk', CHARSET, $res);
}
echo $res;
} /**
* 提示搜索接口
* TODO 暂时未启用,用的是google的接口
*/
public function public_suggest_search() {
//关键词转换为拼音
pc_base::load_sys_func('iconv');
$pinyin = gbk_to_pinyin($q);
if(is_array($pinyin)) {
$pinyin = implode('', $pinyin);
}
$this->keyword_db = pc_base::load_model('search_keyword_model');
$suggest = $this->keyword_db->select("pinyin like '$pinyin%'", '*', 10, 'searchnums DESC'); foreach($suggest as $v) {
echo $v['keyword']."\n";
} }
}
?>

然后在header.html模板上面增加一个“不限”的搜索条件,typeid对应的值为0,search中的index.html和lists.html也做相同处理,效果如本站,这样只要不选择模型那么搜索出来的结果就是所有模型中符合条件的数据

转载:http://www.chengdeshixinxi.com/html/2014/remould_0510/23.html

phpcmsv9全站搜索,不限模型的更多相关文章

  1. phpcms的验证码替换 及 phpcms实现全站搜索功能

    在使用phpcms替换网页的时候,除了正常的替换栏目.内容页等,其他的什么验证码啦,提交表单了,搜索功能了,这些在替换的时候可能会对一些默认文件有一些小小 的改变 下面就是自己在失败中成功的过程,最后 ...

  2. 机器学习之路:python 网格搜索 并行搜索 GridSearchCV 模型检验方法

    git:https://github.com/linyi0604/MachineLearning 如何确定一个模型应该使用哪种参数? k折交叉验证: 将样本分成k份 每次取其中一份做测试数据 其他做训 ...

  3. 搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化

    本文来自网易云社区 作者:穆学锋 简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配.传统做法的用户特征基本是离线计算获得,不够实时:个性化标签虽然具有 ...

  4. 调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数

    Auto-Keras 是一个开源的自动机器学习库.Auto-Keras 的终极目标是允许所有领域的只需要很少的数据科学或者机器学习背景的专家都可以很容易的使用深度学习.Auto-Keras 提供了一系 ...

  5. sql 全站搜索

    SQL全站搜索 create proc Full_Search(@string varchar(50)) as begin declare @tbname varchar(50) declare tb ...

  6. phpcms v9不限模型全站搜索

    简单修改一下v9默认的搜索功能,可以不按模型搜索全站内容 下面是被修改后的search模块中的index.php文件 <?php defined('IN_PHPCMS') or exit('No ...

  7. phpcmsv9自定义sql语句查询模型实现

    在phpcmsv9中,自定义sql语句查询可不太好实现,传入sql语句查询很容易被内部转入生成一系列莫名其妙的sql语句,比如最佳前缀等等,直接造成sql语句查询错误,在此也提供两种解决办法,1修改底 ...

  8. 009-elasticsearch5.4.3【三】搜索概述-查询模型、分页、ES数据类型

    一.概述 1.查询模型 搜索API允许用户执行搜索查询并返回与查询匹配的搜索匹配.它可以跨一个或多个索引以及跨一种或多种类型执行.可以使用查询Java API提供查询.搜索请求的主体是使用Search ...

  9. 杭州电 1372 Knight Moves(全站搜索模板称号)

    http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Others)   ...

随机推荐

  1. C#加密算法汇总(转载)http://www.cnblogs.com/zengxiangzhan/archive/2010/01/30/1659687.html

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 方法一:     //须添加对System.Web的引用    ...

  2. Uva120 Stacks of Flapjacks 翻煎饼

    水水题.给出煎饼数列, 一次只能让第一个到第i个数列全部反转,要求把数列排序为升序. 算法点破后不值几钱... 只要想办法把最大的煎饼放到最后一个,然后就变成前面那些煎饼的数列的子题目了.递归或循环即 ...

  3. python(6)- json和pickle模块

    这是用于序列化的两个模块: json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:dumps ...

  4. kali的openvas安装 留下笔记

    kali的openvas安装 留下笔记,以便下次再查开始在kali找openvas,竟然kali不自带,害的要下载. apt-get updateapt-get dist-upgradeapt-get ...

  5. AngularJs学习经验汇集

    >>关于ng-include 有时候你会发现你用这个指令想要加载某个模板总是加载不出来,url明明是对的,页面还是一片空白,这里有一个细节要注意以下: <div ng-include ...

  6. webservice发布接口

    一:编写接口程序,计算功能类,有加减乘除四个方法 /** * */ package com.hlcui.util; /** * @author Administrator 将此类发布为公共接口 */ ...

  7. 使用GBK编码请求访问nodejs程序报415错误:Error: unsupported charset at urlencodedParser ...

    最近遇到一个问题,第三方用户向我们提供给的回调地址发送请求时一直报415错误,结果发现他们使用的是GBK编码请求,而我们使用的node + express4 程序,不支持GBK编码请求. 问题出在下面 ...

  8. js中关于事件处理函数名后面是否带括号的问题

    今天总结一个关于事件处理程序的小细节.首先回顾一下事件处理的一些概念. JS中的事件处理(事件绑定)就是让某种或某些事件触发某些活动.有两种常见的形式,分别是DOM Level 0 和DOM Leve ...

  9. 百度ueditor编辑器背景不显示问题

    网友办法:http://www.hongxuejing.com/hulianwang/ueditor_not_show_background-33.html 官方办法:http://fex-team. ...

  10. OC3_歌词解析

    // // LrcManager.h // OC3_歌词解析 // // Created by zhangxueming on 15/6/15. // Copyright (c) 2015年 zhan ...