安装solr扩展
这一步不多说了,不懂如何安装php扩展的可自行百度
连接solr
$option = array(
'hostname' => '192.168.1.165', // solr 服务器ip地址
'login' => 'admin', // 用户名 (solr配置了才需要传)
'password' => 'admin', // 密码 (solr配置了才需要传)
'port' => 8983, // 端口
'path' => 'solr/testCore' // 核心
);
$solrClient = new SolrClient($option);
// 通过ping来判断是否连接成功
try{
$solrClient->ping();
}catch(Exception $e){
// 异常,solr服务器连接失败
echo 'sorl 服务器连接失败!';
die($e->getMessage());
}
添加文档
$solrDoc = new SolrInputDocument();
$solrDoc->addField('ID', 7);
$solrDoc->addField('title', '标题11111111111111111111');
$solrDoc->addField('author', 'chenfan');
$solrDoc->addField('content', 'this is test php solrClienthis is test php solrClienthis is test php solrClienthis is test php solrClien');
$solrDoc->addField('lastUpdateTime', time());
$solrDoc->addField('isDelete', 'N');
$solrDoc2 = new SolrInputDocument();
$solrDoc2->addField('ID', 8);
$solrDoc2->addField('title', '标题222222222222222222222');
$solrDoc2->addField('author', 'chenfan');
$solrDoc2->addField('content', 'this is test php solrClienthis is test php solrClienthis is test php solrClienthis is test php solrClien22222222');
$solrDoc2->addField('lastUpdateTime', time());
$solrDoc2->addField('isDelete', 'N');
$solrDocs = array($solrDoc, $solrDoc2);
// 向 solr 服务器添加文档集,失败则抛出异常
try{
$result = $solrClient->addDocuments($solrDocs, true);
// 需 commit 才会立即索引
$solrClient->commit();
// 优化
$solrClient->optimize();
if($result->getResponse()){
echo '添加成功,添加的数据为:';
print_r($result->getRawRequest());
}
}catch(Exception $e){
echo 'solr 添加异常!';
die($e->getMessage());
}
更新文档
更新文档和添加文档一样,只要在数据中指定要更新的id即可。
查询文档
$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery->setQuery('title:标题') // 查询条件
->addSortField('ID', SolrQuery::ORDER_ASC) // 排序
->setStart(0) // 开始数
->setRows(20) // 条数
->setGroup(true) // 开启聚合
->addGroupField('author'); // 聚合列
try{
$result = $solrClient->query($dismaxQuery);
$result = $result->getResponse();
// $result = $result->response->docs;
}catch(Exception $e){
echo 'solr 查询异常!';
die($e->getMessage());
}
print_r($result);
删除文档
$result = $solrClient->deleteByQuery('title:标题');
$solrClient->commit();
$ret = $result->getResponse();
var_dump($ret);