使用框架:slightphp
目录结构:大致不严格的分为三部分(search1.0包含C层和V层;search2.0包含框架代码和S层、M层;search2.0_config)
注意:由于该项目的重写规则在 Apache上 不太友好。当前建议在搭建在nginx上
Controller 控制器目录
Lib 类库文件夹
Comm.class.php
errorCode.php error code代码 说明
PKCS7Encoder.php 基于PKCS7算法的加解密接口
SHA1 class 计算公众平台的消息签名接口
class lib_weixinfunc 供微信使用的公用方法
class lib_wxBizMsgCrypt 对公众平台发送给公众账号的消息
class lib_wxServer 微信相关方法
class XMLParse 提取消息格式中的密文及生成回复消息
Templates 模板文件
Templates_c 模板解析文件
Xunsearch-sdk 讯搜
.htaccess Apache重写
.project
Article。xml
Cli.php cli入口
Cs.php class CS
Global.php 必要的路径配置
Index.php 搜索站点入口
下面文件没用
Conf
Core app应用文件夹
Lib 公用类库
Coinapi.class.php 招财币接口
Comm.class.php
Ds.class.php gearman服务器?
Homesso.class.php 与会员中心交互
Index.class.php 更新索引
User.class.php
Xsindex.class.php 更新迅搜索引类
Model app M层
Service app S层
Xunsearch-sdk 讯搜
Db 好像没什么用
Hooks
Locks
Pecl
Plugins 框架核心代码
slightPHP.php 框架入口
重写规则:
rewrite ^/(assets\/search\/(css|js))(.*\.(css|js)) /min/index.php?b=$1&f=$4 last;
rewrite ^/(.+?)$ /index.php?PATH_INFO=controller/$1 last;
新建、更新索引:
Url:s.3158.nginx/index/id.html?type=project&id=100
Project为实例名称。Id为项目id
添加、更新索引程序流程图:
1、Search1.0/controller/index.page.php controller_index->pageId() :return (int)(core_lib_index::$type($id));
2、Search2.0/core/lib/index.class.php core_lib_index->project($projectids,$path='') {
$solr = new SSolr(PROJECT_SOLR_IP,PROJECT_SOLR_PORT,$path); //实例化project solr实例
$part = new Apache_Solr_Document();// 实例化solr字段相关类
$documents = $part->addField() //构建索引字段
$solr->addDocuments($documents);//添加
$solr->commit();//这一步的大致如下:$rawPost = '<commit expungeDeletes="' . $expungeValue . '" waitSearcher="' . $searcherValue . '" />';return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);
}
2中调用的方法:
Search2.0/plugins/ Ssolr->addDocuments() :(1)拼接出xml格式$rawPost;
(2) $this->add($rawPost);-->return $this->_sendRawPost($this->_updateUrl, $rawPost);
protected function _sendRawPost($url, $rawPost, $timeout = FALSE, $contentType = 'text/xml; charset=UTF-8')
{
$httpTransport = $this->getHttpTransport();//实例化HTTP请求
$httpResponse = $httpTransport->performPostRequest($url, $rawPost, $contentType, $timeout);
//HTTP返回结果
$solrResponse = new Apache_Solr_Response($httpResponse, $this->_createDocuments, $this->_collapseSingleValueArrays);//处理HTTP返回结果
if ($solrResponse->getHttpStatus() != 200)
{
throw new Apache_Solr_HttpTransportException($solrResponse);
}
return $solrResponse;
}
用到的相关表:
$mdl_project = SModel::init('core_model_aiapp_project');
$projects = $mdl_project->select($condition)->items;
表aiapp_project
搜索流程: (例:搜索项目)
http://s.3158.nginx/main/project.html?kw=排骨 本地host(s.3158.nginx)
经入口调用的控制器方法:
Search/controller/main.page.php class controller_main->pageProject()
1、$tcprojectid = $this->jpprojrct();//获取 精品项目
$solr_q //搜索条件
$solr_params //solr请求所带的参数。参数详解参照网上
2、$rs = $this->_solr->search($solr_q, $offset, $limit, $solr_params); //发送请求,返回solr搜索结果
3、$redis = new SRedis('zhaocaimao'); //实例化redis
$topicarr[$v['projectid']] = $redis->hGet($this->_redisname, $v['projectid']); //获取问答相关链接
4、渲染模板
转载自原文链接, 如需删除请联系管理员。
原文链接:slightphp框架,转载请注明来源!