安装 Solr(Solr 是依赖 jdk 的,所以先安装 jdk)
配置 jdk 环境变量
使用编辑命令:vim /etc/profile 进行编辑
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
然后重新加载配置文件: . /etc/profile
上传 solr,把 solr 等文件上传到提前创建好的 upload 目录,然后使用 tar -zxvf 进行解压
通过命令进行复制:cp solr-8.2.0 -R /usr/local/solr
修改启动参数
进入到 bin 目录: cd /usr/local/solr/bin
比较重要的 solr.in.sh,这个 linux 启动命令的脚本文件
solr.in.cmd 和 solr.com 是 windows 启动命令脚本文件
对 solr.in.sh 进行编辑,设置 SOLR_ULIMIT_CHECKS=false
这是 linux 的安全检查,这是成 false 表示禁用就可以了
编辑命令:vim solr.in.sh
启动 Solr
Solr 内嵌 Jetty,直接启动就可以,默认监听端口 8983
Solr 默认不推荐 root 账户启动,如果是 root 账户启动需要添加 -force 参数
启动命令: ./solr start –force
停止命令:./solr stop
查看状态:./solr status
可视化管理界面
在 windows 的浏览器中访问 Solr(如果访问不了,检查是否关闭了防火墙)
输入 http://192.168.227.133:8983/solr
左侧 5 个菜单分别是:
- Dashboard:面板显示 Solr 的总体信息
- Logging:日志
- Core Admin:Solr 的核心,类似数据库的 Database
- Java Perperties:所有 Java 相关属性
- Thread Dump:线程相关信息
新建核心
Solr 安装完默认没有核心,需要手动配置
首先我们进入 linux 系统的 Solr 的配置模板目录,需要在 /usr/local/solr/server/solr 下新建文件夹,并给定配置文件,否则无法建立
在 /usr/local/solr/server/solr 中新建自定义名称目录。此处示例名称为 testcore
cd /usr/local/solr/server/solr
mkdir testcore
复制配置文件
在 /usr/local/solr/server/solr 目录中有个目录 configsets 里面包含了 _default 和 sample_techproducts_configs,里面都是配置文件示例
_default:属于默认配置,较纯净
sample_techproducts_configs:带有了一些配置示例
进入到_default进行查看:
Managed-schema:核心配置文件
Params.json: 参数 json
Protwords.txt: 报告文档描述文件: 扩展词, 苹果【肾8】
Solrconfig.xml:solr 的服务的配置信息
Stopwords.txt: 停用词的描述文件
Synonyms.txt: 介词的描述文件 “的地得了”,等这些借此描述的操作
那么我们要把 _defaul t目录下 conf 的这个目录复制出来进行操作
cp -r configsets/_default/conf/ testcore/
填写 Core 信息
回到浏览器中在可视化管理界面中 Core Admin 中编写信息后点击 Add Core 后,短暂延迟后 testcore 就会创建成功。schema 处不用更改。
开始新建 testcore 实例
单击 add Core 后我们一会就回看到我们的新建的一个 solr 的实例
创建完成我们的实例后回到 linux 中 我们再次查看下在 testcore 目录下有什么东西:
多了两个东西 core.properties 文件和 data 目录
进入 data 目录进行查看:
tlog:日志信息
index:存放索引的地方
分词 Analysis
在 Solr 可视化管理界面中, Core 的管理菜单项中都会有Analysis 。表示根据 Scheme.xml(managed-schema) 中配置要求进行解析。
对英文解析就比较简单了,只要按照空格把英文语句拆分成英文单词即可。
但是如果条件是中文时,把一句话按照字进行拆分就不是很合理了。正确的方式是按照合理的词组进行拆分。
中文分词器安装及配置步骤
上传 ik-analyzer.jar 到 webapps 中
去 https://search.maven.org/search?q=com.github.magese 下载对应版本的ik-analyzer。可以在"软件/Analyzer"中直接获取。
上传 ik-analyzer-8.2.0.jar 到 /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib 目录中
修改配置文件
修改 /usr/local/solr/server/solr/testcore/conf/managed-schema
vim /usr/local/solr/server/solr/testcore/conf/managed-schema
添加下面内容:
<field name="myfield" type="text_ik" indexed="true" stored="true" />
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
重启 Solr
cd /usr/local/solr/bin
./solr stop
./solr start –force
数据初始化
修改 managed-schemal 文件
vim /usr/local/solr/server/solr/testcore/conf/managed-schema
注意:
1. 下面内容放入到根节点里。
2. 别放到注释里。
3. 所有作为搜索条件的列都是 text_ik 类型。其中分类名称不是,因为不希望对分类名称进行分词。
4. 所有作为搜索条件的属性 index 都设置为 true
5. 所有页面需要的属性 stored 都设置为 true
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="plong" indexed="false" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="false" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
<copyField source="item_desc" dest="item_keywords"/>
重启 solr 服务,上面的这些字段就可以作为我们搜索的条件,并查询出对应的结果
修改 solr 配置文件【导入数据库的数据】
vim /usr/local/solr/server/solr/testcore/conf/solrconfig.xml
放入到根节点中
<!-- 配置数据导入的处理器 -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<!-- 加载 data-config.xml -->
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
新建 data-config.xml
vim /usr/local/solr/server/solr/testcore/conf/data-config.xml
注意:
ip 为 windows 的 ip
密码修改成自己的密码。
粘贴时,一定先启动编辑状态(点击 i 键)在粘贴
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://xxxxxxxxxx:3306/db"
user="root"
password="123456"/>
<document>
<entity name="item" query="SELECT i.id,i.title,i.sell_point,i.price,i.image,c.`name`,d.item_desc FROM tb_item i,tb_item_cat c,tb_item_desc d WHERE i.cid = c.id AND i.id= d.item_id">
<field column="id" name="id"/>
<field column="name" name="item_category_name"/>
<field column="price" name="item_price"/>
<field column="title" name="item_title"/>
<field column="sell_point" name="item_sell_point"/>
<field column="image" name="item_image"/>
<field column="item_desc" name="item_desc"/>
</entity>
</document>
</dataConfig>
添加jar包
我们要把jar包拷贝到这个地方:cd /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib
首先在dist目录下有以下两个jar包
向 solr-webapp 中添加三个 jar。在 dist 中两个还有一个数据库驱动。以下为传递过来的jar包
然后重启 solr 服务器
通过浏览器进行查看
rver/solr-webapp/webapp/WEB-INF/lib**
首先在dist目录下有以下两个jar包
向 solr-webapp 中添加三个 jar。在 dist 中两个还有一个数据库驱动。以下为传递过来的jar包
然后重启 solr 服务器
通过浏览器进行查看