PHP使用Solr全文搜索引擎(windows)
在 windows 上使用 solr 全文搜索引擎
安装 solr
安装 jre 运行环境
已正确安装 JRE 运行环境。
JRE 安装请参考《JRE 安装指南》。
下载 solr
下载地址:https://solr.apache.org/downloads.html ,如图所示:
或者:
http://archive.apache.org/dist/lucene/solr/
各系统适用版本见下表。
安装包版本 | 适用系统 |
---|---|
solr-X.X.X-src.tgz | Solr 源代码。可在不使用官方 Git 存储库的情况下在 Solr 上进行开 |
solr-X.X.X.tgz | Linux/Unix/OSX |
solr-X.X.X.zip | Microsoft Windows |
安装 Solr
使用解压工具解压安装包,解压即可启动。解压后目录结构如表所示:
目录名称 | 功能 | 次级文件/文件目录 | 功能 |
---|---|---|---|
bin/ | 包含几个重要的脚本,它们将使 Solr 的使用更容易 | Solr、solr.cmd | 是 Solr 的控制脚本,也称为 bin/solr(*nix) / bin/solr.cmd(Windows)。此脚本是启动和停止 Solr 的首选工具。在 SolrCloud 模式下运行时,您还可以创建集合或核心、配置身份验证和使用配置文件 |
post | 提供了用于发布内容到 Solr 一个简单的命令行界面 | ||
solr.in.sh、solr.in.cmd | 是 *nix 和 Windows 系统的属性文件。Java、Jetty 和 Solr 的系统级属性在此处配置。使用 bin/solr/时可以覆盖其中许多设置 bin/solr.cmd,但这允许您在一个地方设置所有属性 | ||
install_solr_services.sh | 此脚本在 *nix 系统上用于将 Solr 安装为服务 | ||
contrib/ | 包括用于 Solr 特殊功能的附加插件 | / | / |
dist/ | 包含主要的 Solr .jar 文件 | / | / |
docs/ | 包含指向 Solr 的在线 Javadocs 的链接 | / | / |
example/ | 包含多种类型的示例,用于演示各种 Solr 功能 | / | / |
licenses/ | 包含 Solr 使用的第 3 方库的所有许可证 | / | / |
server/ | 是 Solr 应用程序的核心所在 | /solr-webapp | Solr 的 UI 管理 |
/lib | Jetty libraries | ||
/logs | 日志文件 | ||
/resources | 日志配置 | ||
/solr/configsets | 示例配置集 |
启动 solr
Solr 包括一个名为 bin/solr(Linux/MacOS) 或 bin\solr.cmd(Windows)的命令行界面工具。该工具允许您启动和停止 Solr、创建核心和集合、配置身份验证以及检查系统状态。
要使用它来启动 Solr,只需在解压后的 bin 目录下打开命令行,执行命令:
1 | ./solr start |
几条常用命令
1 | solr start –p 端口号 #单机版启动solr服务 |
这将在后台启动 Solr,侦听端口 8983。当您在后台启动 Solr 时,脚本将等待以确保 Solr 正确启动,然后再返回命令行提示符。
启动完成后默认监听 8983 端口,管理界面访问地址:http://localhost:8983/solr/
停止 Solr
在 bin 目录下执行命令:
./solr stop -all
注:停止时必须指定端口。
安装 php 扩展 solr .dll
0、环境
- 操作系统:Windows10
- solr: 8.9.0
- php:7.3 (nts)
1、扩展说明
扩展地址:
https://pecl.php.net/
确定线性与非线性
Non Thread Safe (NTS) x64 / Thread Safe (TS) x64
通过 phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全
如果是:enabled,一般来说应该是 ts 版,否则是 nts 版。
2、安装 php 扩展
打开扩展下载地址:
https://pecl.php.net/package/solr
选择版本后面的 dll 文件(我用的是 2.5.1 版本的 dll)
https://windows.php.net/downloads/pecl/releases/solr/2.5.1/php_solr-2.5.1-7.3-nts-vc15-x64.zip
并点击下载。
下载成功后,解压获取:
- php_solr.dll
- php_solr.pdb
将压缩包的 php_solr.dll、php_solr.pdb 放到你的 php 扩展目录下 php/ext/ 下。
php.ini 中加入 extension=php_solr.dll
我的集成环境位置: D:\phpEnv\php\php-7.3\ext
重启服务器,查看 phpinfo(),
是否有显示 solr 扩展加载成功。
常用操作
创建 core,-c 指定创建的 core 名
./solr create -c test_core1 1
删除 core,-c 指定删除的 core 名
./solr delete -c test_core1
二、创建核心
2.1 创建核心前准备工作
每个核心都是 solr 的一个实例,一个 solr 服务可以创建多个核心,每个核心都可以进行自己独立配置。
- 1.切换至 solr_home\server\solr 目录,例如:E:\solr-8.1.1\server\solr,在该目录下创建一个文件夹,文件夹名称与核心名称相同。
_v_images/2019062
- 2.将 E:\solr-8.1.1\server\solr\configsets_default 路径下的 conf 文件夹复制到 new_core 目录(E:\solr-8.1.1\server\solr\new_core)下。
2.2 创建核心
方式一:打开 solr 界面,进行如图顺序操作。
这种方式 需要 在 E:\solr-8.1.1\server\solr 目录下创建 new_core 文件夹
方式二:bin 目录下输入命令:solr create -c new_core (推荐)
三、schema
每个核心 core 中都有这么一个 schema 配置文件。 schema 文件可以对索引库的数据类型进行定义,对字段是否进行索引、存储等进行配置,需要针对狠心单独进行配置。 schema 的数据类型进本够用,如果不能满足需求,比如说对中文分词、拼音分词等,就可以自定义分词器。 Solr8.1.1 的 schema 的配置文件名 为 managed-schema,home\server\solr\new_core\conf\managed-schema(E:\solr-8.1.1\server\solr\core_issuer\conf)。
3.1 schema 主要成员
- (1) fieldType:为 field 定义类型,最主要作用是定义分词器,分词器决定着如何从文档中检索关键字。
- (2) analyzer:fieldType 的子元素,是分词器,由 tokenizer 和 filter 组成。例如
- (3) field:字段,用来创建索引,如果这个字段需要生成索引,则需要设置的 indexed 为 true,需要存储设置 stored 属性为 true。例如:
3.2 添加索引字段
- 方式一:直接修改 managed-schema 配置文件(不推荐,修改后需要重启服务),例如:
- 方式二:通过 solr 页面进行添加。(推荐,不需要重启服务)

3.3 配置中文分词工具
- 1.下载中文分词器 IKAnalyzer,下载地址,密码:igt9。
- 2.解压压缩包包,目录如下:
- 3.将两个 jar 包复制到该路径下:E:\solr-8.1.1\server\solr-webapp\webapp\WEB-INF\lib。
- 4.另外将三个配置文件复制到该路径下:E:\solr-8.1.1\server\solr-webapp\webapp\WEB-INF\classes。如果没有 classes 文件夹就新建一个。
- 5.在 schema 中添加分词器。
1 | <fieldType name="text_ik" class="solr.TextField"> |
- 6.在 ext.dic 文件中添加自定义的中文词组
- 需要重启 solr
效果如下:
四、导入索引数据(mysql 数据为例)
- 1.创建 mysql 数据库
- 2.在该路径下 solr_home\server\solr\new_core\conf(E:\solr-8.1.1\server\solr\core_issuer\conf)下新建 my-data-config.xml 文件
1 | <?xml version="1.0" encoding="UTF-8" ?> |
- 3.用 solr 添加数据库字段对应的索引字段,添加后打开 managed-schema 文件会看到:
1 | <field name="name" type="string" indexed="true" stored="true"/> |
请勿添加 id 字段,该字段已存在,添加会报错
- 4.打开该路径下文件:solr_home\server\solr\new_core\conf\solrconfig.xml(E:\solr-8.1.1\server\solr\core_issuer\conf\solrconfig.xml),随便找一个与 requestHandler 同级节点上添加以下配置。如图:
1 | <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> |
- 5.将 solr_home\dist(E:\solr-8.1.1\dist)目录下的 solr-dataimporthandler-8.1.1.jar 和 MySQL 驱动(随便找个 MySQL 驱动)复制到 solr_home\server\solr-webapp\webapp\WEB-INF\lib(E:\solr-8.1.1\server\solr-webapp\webapp\WEB-INF\lib)目录下。
- 6.重启 solr 服务。
- 7.打开 solr 页面,进行下面操作。
- 8.检测数据是否导入成功
如果对索引字段进行中文分词
添加对索引字段时,fileType :选择 text_ik
效果如图: 查询 鲁西化工 的结果
七、删除索引库(删除所有数据)的两种方法
- 1.删除索引库所有数据的方法一:直接用 solr 可视化界面删除