laravel+solr实现中文分词搜索查询(一)

4 篇文章 0 订阅
3 篇文章 0 订阅

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); // 或者

后续还会在进行更新

腾讯云11.11云上盛惠,1核2G云服务器首年88元,累计订单享10%满返,还可免费领取11000元代金券大礼包!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值