php使用solr全文搜索引擎

2025-10-08 08:14:51

1、已经安装java环境的朋友可以直接进入下一步

首先我们需要下载java开发工具包JDK,安装根据提示进行,安装完成之后配置环境变量

因为这里不允许放外链, 请直接百度“Java 开发环境配置 | 菜鸟教程”,然后选runoob的,按照步骤来就OK,配置好之后,cmd中运行“java -version”,出现以下信息,说明环境变量配置成功。

php使用solr全文搜索引擎

1、百度“Solr7.5安装和使用详细教程(单机版)”参考,到后面导入索引数据

我是照着这个做的,没有问题,所以你也可以。鉴于我的重点是PHP使用solr,所以我就下一步了

官网下载solr,解压下载的压缩包即可完成Solr安装。

php使用solr全文搜索引擎

2、打开DOS,路径切换至solr_home\bin,执行命令:solr start –p 8983,将solr在8983端口运行,看到以下图片就证明solr启动成功了。

solr_home是你下载之后解压的目录

solr常用命令:

solr start –p 8983 启动

solr restart –p 8983 重启

solr stop –p 8983 关闭

php使用solr全文搜索引擎

3、在浏览器访问:localhost:8983,会出现以下页面。solr安装就算完成了。

php使用solr全文搜索引擎

4、其他的创建core,修改配置、添加中文分词器等,建议百度“Solr7.5安装和使用详细教程(单机版)”参考,到后面导入索引数据

我是照着这个做的,没有问题,所以你也可以。鉴于我的重点是PHP使用solr,所以我就下一步了

另外也可以百度solr使用文档

php使用solr全文搜索引擎

1、PHP安装solr扩展

下载php的solr扩展 https://pecl.php.net/package/solr  选择最新版本

注意:php有Thread Safe和NoneThread Safe之分,下载之前,请先确定你安装的php是哪种类型。

php使用solr全文搜索引擎

2、下载解压之后,将其中的dll文件放到php的扩展目录,然后在php.ini开启solr扩展,再通过phpinfo查看是否正常安装

[solr]

extension=php_solr.dll

php使用solr全文搜索引擎

3、做了这么多,才算准备工作做完,终于可以开始撸代码了

前面参考的链接,已经完成了从数据库添加数据到solr

所以先介绍PHP查询solr吧

//solr数据库配置    

$options = array

(

    'hostname' => "localhost",

    'path'     => 'solr/ykb_shop_solr_many',//你创建的核心名字

    'port'     => '8983',

);

//solr客户端创建

$client = new SolrClient($options);

$query = new SolrQuery();

//solr简易查询条件生成

$keyword = isset($_POST['keyword'])&&!empty($_POST['keyword'])?$_POST['keyword']:"苹果"; 

$query->setQuery($keyword);

$query->setStart(0);

$query->setRows(10);

$query_response = $client->query($query);

$response = $query_response->getResponse();

$count = $response["response"]['numFound'];

$arr = $response["response"]['docs'];

php使用solr全文搜索引擎

4、   // 通过PHP从数据库获取商品数据导入到solr搜索引擎

    $sql = " SELECT * FROM " . $ecs->table('goods') . " WHERE user_id =2334  limit 10";

    $data = $db->getAll($sql);

//循环整理数据,这里可以根据你的实际情况addField

    foreach ($data as $key => $value) {

        $doc = new SolrInputDocument();

        $doc->addField('goodId', $value['goods_id']);

        $doc->addField('goods_name', $value['goods_name']."20190909");

        $doc->addField('goods_number', $value['goods_number']);

        $doc->addField('goods_sn', $value['goods_sn']);

        $doc->addField('cat_name', "其他");

        $doc->addField('brand_name', "测试店铺1");

        $doc->addField('shop_price', $value['shop_price']);

        $doc->addField('rz_shopName', '测试店铺1');

        $doc->addField('id',$value['goods_id']);//当索引文档中主键id值存在时,会更新原文档,不存在则会添加文档。我这里商品id是唯一的,所以这样使用

        $response = $client->addDocument($doc);

    }

//提交

    $client->commit();

可以搜索到刚刚从数据库导入的商品

php使用solr全文搜索引擎

5、好了,故事到这里就结束了,未来你还会遇到很多问题,比如搜索结果不准确,想要的结果跟实际的效果不一样,商品权重问题,有没有特殊字符也可能影响搜索结果,等等。希望我们披荆斩棘,走过重重难关。

最后演示一个联想词的效果

祝你好运

php使用solr全文搜索引擎

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢