下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.1.1/
注:这里我使用的8.1.1版本,可以根据自己需要选择版本。若是版本相差较大,可能安装配置方式有所不同。
下载完成之后有个:solr-8.1.1.tgz
JDK8安装略。
一、安装配置solr
1、解压
tar zxf solr-8.1.1.tgz
解压后目录如下所示:
2、启动solr
solr启动脚本放置在solr-8.1.1/bin目录下。
切换到解压目录并启动:
./bin/solr start
./bin/solr start -force
默认端口:8983
指定端口启动
./bin/solr start -p 8081 -force
bin/solr stop -all 关闭solr服务
bin/solr start -force 开启solr服务
bin/solr restart -force 重启solr服务
bin/solr status 查看solr服务状态
3、访问:
http://ip:端口/solr
注意:当我们修改了配置或者添加了jar或者其他资源之后,必须重启服务才能生效,之后内容不再赘余。
二、配置内核
创建时可能会遇到错误提示,提示你找不到***.xml资源,如下图所示(下图是我创建另一个内核的错误信息截图哦):
我们将"/usr/local/solr/solr-8.1.1/server/solr/configsets/_default/conf"目录下的所有文件拷贝到"/usr/local/solr/solr-8.1.1/server/solr/admin"目录下即可。
cp -r /usr/local/solr/solr-8.1.1/server/solr/configsets/_default/conf /usr/local/solr/solr-8.1.1/server/solr/admin
注:如上"/usr/local/solr/solr-8.1.1"根据自己的目录进行替换。
创建好之后如下所示:
三、配置中文分词器
下载ik-analyzer-8.1.0.jar
选择自己需要的版本:
注:ik-analyzer版本最好与solr版本对应
下载完成之后,将jar包放置在"/usr/local/solr/solr-8.1.1/server/solr-webapp/webapp/WEB-INF/lib"目录下。
切换到"/usr/local/solr/solr-8.1.1/server/solr/admin/conf"
vim managed-schema
添加如下内容:
解压jar包可以看到如下文件:
将"ext.dit"、“IKAnalyzer.cfg.xml”、“stopword.dic"三个文件放置在”/usr/local/solr/solr-8.1.1/server/solr-webapp/webapp/WEB-INF/classes"目录下。要是没有classes目录自己创建即可。
其中"ext.dit"中可以添加用户自定义的分词,每个词用回车分隔。
其中"IKAnalyzer.cfg.xml"中配置如下所示:
重启solr
bin/solr restart -force
查看效果:
(1)未添加分词之前
(2)添加分词之后
(3)编辑"ext.dic"文件,内容如下:
效果如下:(可以看到"词器"也被当做一个词了)
四、solr配置DataImport
例如我们想将数据库user中的数据库表user中的数据导入到solr中:
1、创建数据库表user并插入数据
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(45) COLLATE utf8_bin DEFAULT NULL,
`sex` varchar(45) COLLATE utf8_bin DEFAULT NULL,
`address` varchar(45) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
2、修改配置文件
找到当前内核的配置文件,例如"/usr/local/solr/solr-8.1.1/server/solr/admin/conf/solrconfig.xml",在配置文件中添加如下内容:
和
data-config.xml
3、添加"data-config.xml"文件
在"/usr/local/solr/solr-8.1.1/server/solr/admin/conf/"目录下创建"data-config.xml"文件并添加如下内容(注:文件内容自己调整):
4、下载jar包
如上(2)的配置文件添加的内容我们也看到了添加了jar包的路径,现在我们要将需要的这两个jar包放置到对应的位置,两个jar包如下:
下载如上两个jar包,将其放置在"/usr/local/solr/solr-8.1.1/dist",新建目录"dataimporthandler"和"db",将"solr-dataimporthandler-8.1.1.jar"放置在"dataimporthandler"目录下,将"mysql-connector-java-8.0.16.jar"放置在"db"目录下。
5、修改schema文件
修改"/usr/local/solr/solr-8.1.1/server/solr/admin/conf"目录下的"managed-schema",添加如下内容:
注:如上的字段名必须和(3)中的进行对应。
6、开始导入user表中的数据,如下操作:
注:操作后可能会在log中出现如下警告信息:
只需要在"/usr/local/solr/solr-8.1.1/server/solr/admin/conf"目录下创建一个空的"dataimport.properties"文件即可。
配置完成之后一定要记得重启,重启之后重新导入,这时就没有这个警告了。
五、java操作solr
org.apache.solr
solr-solrj
8.1.1
import java.io.IOException;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
public class SolrDemo {
private static final String URL = "http://192.168.1.9:8081/solr";
private static final String CORE = "/admin";
public static void main(String[] args) throws SolrServerException, IOException {
//添加Document
HttpSolrClient solr = new HttpSolrClient.Builder(URL + CORE).withConnectionTimeout(10000).withSocketTimeout(60000).build();
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "1001");
doc.setField("name", "ch");
doc.setField("age", "26");
solr.add(doc);
solr.commit();
SolrInputDocument doc2 = new SolrInputDocument();
doc2.setField("id", "1002");
doc2.setField("name", "button");
doc2.setField("age", "26");
solr.add(doc2);
solr.commit();
//提交修改
SolrQuery query = new SolrQuery();
//设置solr查询参数
query.set("q", "id:1001");
//获取查询结果
QueryResponse response = solr.query(query);
//查询得到文档的集合
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("name"));
}
//删除文档
solr.deleteById("1001");
solr.commit();
//删除所有
solr.deleteByQuery("*:*");
solr.commit();
//关闭连接
solr.close();
}
}
相关资料分享如下:
链接:https://pan.baidu.com/s/106dkXoX5ukJmlB-nzJh7Xg
提取码:s79w