solr的安装在此不讲,本文只讲的是laravel+solr的查询。
安装laravel solr组件:
# 不指定版本号
composer require solarium/solarium
# 指定版本号
composer require solarium/solarium:4.0
使用组件连接solr:
可以这样写成一个公共的文件方便管理以及简化需要用到solr地方的连接代码
<?php
namespace App\Services\Solr;
use Solarium\Client;
class SolrService{
public static function connection($coreName){
$options = [
'endpoint' => [
'localhost' => [
'host' => env('SOLR_HOST'), //IP地址
'port' => env('SOLR_PORT'), //端口号
'core' => $coreName, // 连接名称
'username'=>env('SOLR_USERNAME'), // 用户名
"password"=>env('SOLR_PASSWORD'), // 密码
//'path' => '/solr/new_core',
'wt'=>env('SOLR_WT'), // 返回的格式
],
],
];
$client = new Client( $options ); // 实例化客户端进行连接
return $client;
}
}
在方法中调用
// 需要引入 根据自己的命名空间进行引入此处只是一个案例
use App\Services\Solr\SolrService;
$solr = SolrService::connection('对应solr的文档名称');
$query = $solr->createSelect(); // 创建插叙
$query->setStart(0); // 分页使用 开始页数
$query->setRows(10); // 每页多少条数据
$query->setQuery('title:'.$keyword); // 查询条件
$query->createFilterQuery('role_id')->setQuery('role_id:('.$storeId.')'); // 这种写法类似于sql中的in查询 还有一些更多操作会在文末给出
$query->createFilterQuery('goods_status')->setQuery('goods_status:0'); // 设置查询条件
$query->setQueryDefaultField('title'); // 设置默认的插叙条件
$result = $solr->select($query); // 执行查询
$data = $result->getData(); // 获取返回的内容
/*
$result->getData();
返回的结果 小伙伴们也可以尝试一下其他的方法 在此不再赘述
array:1 [
"response" => array:5 [
"numFound" => 1
"start" => 0
"maxScore" => 1.0
"numFoundExact" => true
"docs" => array:1 [
0 => array:7 [
"id" => "10800"
"role_id" => 131305
"title" => "金枕头榴莲"
"created_at" => "2020-08-1516:09:54"
"goods_status" => "0"
"_version_" => 1682240719792635904
"score" => 1.0
]
]
]
]*/
上面给出的类似于sql in的查询方法其他操作 还有其他的操作各位可以自己尝试一下,在写本文的时候还没有尝试其他的操作,所以也就没有写出来,各位见谅,有用过其他的操作辛苦您在评论区留下您宝贵的代码。
role_id:(1 or 2 or 3); // 或者
role_id:(role_id:1 or role_id:2 or role_id:3); // 或者
后续还会在进行更新