php的solr的操作类及demo
一、solr类
'127.0.0.1','port' => '8080');
/**
* 设置solr库选择
* @param $core string 库名称
*/
public static function setcore($core){
if($core) self::$options['path']='solr/'.$core;
}
/**
* 增加solr索引
* @param $fieldarr 索引字段及值
* @return bool true
*/
public static function adddocument($fieldarr=array()){
$client = new solrclient(self::$options);
$doc = new solrinputdocument();
foreach($fieldarr as $k => $v){
$doc->addfield($k,$v);
}
$client->adddocument($doc);
$client->commit();
return true;
}
/**
* 删除索引
* @param $id 主键id id可以为数组形式,应用于多选的情况
* @return bool true
*/
public static function deldocument($ids){
$client = new solrclient(self::$options);
if(is_array($ids))
$client->deletebyids($ids);
else
$client->deletebyid($ids);
$client->commit();
return true;
}
/**
* 查询数据
* @param $qwhere 关键字
* @param $fqwhere 附加条件,根据范围检索,适用于数值型
* @param $getfield 查询字段
* @param $sort 排序 array('duration'=>'asc') asc:升序,desc:降序
* @param $pageindex 查询页数
* @param $pagesize 每页显示条数
*/
public static function selectquery($qwhere=array(),$fqwhere=array(),$getfield=array(),$sort=array(),$pageindex=1,$pagesize=20){
$client = new solrclient(self::$options);
$query = new solrquery();
$sel = '';
foreach($qwhere as $k => $v){
// $sel .= ' +'.$k.':'.$v;
$sel = "{$k} : \"{$v}\"";
}
$query->setquery($sel);
//关键字检索
//附加条件,根据范围检索,适用于数值型
if($fqwhere){
$query->setfacet(true);
foreach($fqwhere as $k => $v)
$query->addfacetquery($v);
//$query->addfacetquery('price:[* to 500]');
}
//查询字段
if($getfield){
foreach($getfield as $key => $val)
$query->addfield($val);
}
//排序
if($sort){
foreach($sort as $k => $v){
if($v == 'asc')
$query->addsortfield($k,solrquery::order_asc);
elseif($v == 'desc')
$query->addsortfield($k,solrquery::order_desc);
}
}
//分页
$query->setstart(self::getpageindex($pageindex,$pagesize));
$query->setrows($pagesize);
$query_response = $client->query($query);
$response = $query_response->getresponse();
return $response;
}
/**
* 分页数据处理
*/
private static function getpageindex($pageindex,$pagesize){
if($pageindex<=1)
$pageindex = 0;
else
$pageindex = ($pageindex-1)*$pagesize;
return $pageindex;
}
}
二、操作demo
"wang jing jie",
);
print_r(phpsolr::selectquery($qwhere));
//添加
$fieldarr = array(
"id" => 15,
"username" => "si sheng chao",
"usertype" => 1,
"last_update_time" => "2016-01-05t03:35:13z",
);
phpsolr::adddocument($fieldarr);
//删除
//phpsolr::deldocument(15);
以上就介绍了php的solr的操作类及demo,包括了方面的内容。
相关文章:
安装php-solr扩展
搜索方案 solr+php如何安装配置?
集成 php 应用和 solr 搜索引擎