Press "Enter" to skip to content

php操作solr

安装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);
发表评论

邮箱地址不会被公开。 必填项已用*标注