当前位置: 首页 > 工具软件 > php_solr > 使用案例 >

php操作solr

巫马庆
2023-12-01

安装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);
 类似资料: