行业知识
linux搭建solr,使用java进行索引增删改查
在linux系统上搭建solr,并且使用ik分词,添加数据导入,使用java代码实现增删改查相关功能。
()1.solr下载
下载solr的tar包:https://archive.apache.org/dist/lucene/solr,根据所需下载具体的版本呢
下载IK分词jar包:GitHub - magese/ik-analyzer-solr: ik-analyzer for solr 7.x-8.x,下载jar包
()2.解压安装
创建solr安装目录
mkdir -p /usr/local/solr
解压 solr包
tar -zxf solr-8.2.0.tgz -C /usr/local/solr
进入安装solr的目录
cd /usr/local/solr/solr-8.2.0
solr启动或者停止
bin/solr startbin/solr start -forcebin/solr stop -all
创建实例
bin/solr create -c test -force
3.安装ik分词器
将 ik-analyzer-8.5.0.jar复制到/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/lib
实例配置
进入/usr/local/solr/solr-8.2.0/server/solr/test/conf
vi managed-schema
最文件末尾添加一下信息
4.数据导入
进入/usr/local/solr/solr-8.2.0/server/solr/test/conf
vi managed-schema
文件113行
下添加相关字
进入/usr/local/solr/solr-8.2.0/server/solr/test/conf/solrconfig.xml
87行添加:
文件最后添加
data-config.xml
在/usr/local/solr/solr-8.2.0/server/solr/test/conf创建data-config.xml文件
导入mysql数据库数据先关包
复制包到/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/lib
ik-analyzer-8.5.0,前边下载的
mysql-connector-java-5.1.32,自行下载
/usr/local/solr/solr-8.2.0/dist/solr-dataimporthandler-8.2.0
/usr/local/solr/solr-8.2.0/dist/solr-dataimporthandler-extras-8.2.0
5.添加访问账号和密码
目录/usr/local/solr/solr-8.2.0/server/etc添加verify.properties账号密码文件,格式如下
#用户名 密码 权限
user:pass,admin
修改/usr/local/solr/solr-8.2.0/server/contexts/solr-jetty-context.xml文件,在configure中添加如下配置
verify—name /etc/verify.properties
修改/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/web.xml文件,在security-constraint后追加如下配置
Solr / admin BASIC verify-name
6.重启项目
启用和停用命令:在/usr/local/solr/solr-8.2.0目录中执行
强制启动:bin/solr start -force
强制停止:bin/solr stop -all
7.java使用solrj包进行增删改查
仓库坐标
org.apache.solr solr-solrj 8.2.0
测试用例如下
public class SolrUtil { protected static Logger logger = LogManager.getLogger(SolrUtil.class); public static void main(String[] args) { //queryQuestionByContentFromSolr(); //addQuestionToSolr(); //deleteDocumentById(); } /** * 新增试题索引 */ public static void addQuestionToSolr(){ try { HttpSolrClient.Builder builer = new HttpSolrClient .Builder("http://192.168.0.222:8983/solr") .withConnectionTimeout(10000) .withSocketTimeout(60000); SolrClient client = builer.build(); SolrInputDocument inputDocument = new SolrInputDocument(); inputDocument.addField("id", "77777"); inputDocument.addField("QUESTION_ID", "77777"); inputDocument.addField("QUESTION_STEM", "角色名称7777788888"); UpdateRequest updateRequest = new UpdateRequest(); updateRequest.setBasicAuthCredentials("name","123456"); updateRequest.add(inputDocument); UpdateResponse commit = updateRequest.commit(client, "test"); System.out.println(commit.getStatus()); System.out.println(commit.getResponse()); System.out.println("结束!"); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 删除试题 */ public static void deleteDocumentById(){ try { HttpSolrClient.Builder builer = new HttpSolrClient .Builder("http://192.168.0.222:8983/solr") .withConnectionTimeout(10000) .withSocketTimeout(60000); SolrClient client = builer.build(); /* SolrInputDocument inputDocument = new SolrInputDocument(); inputDocument.addField("id", "77777"); inputDocument.addField("QUESTION_ID", "77777"); inputDocument.addField("QUESTION_STEM", "角色名称7777788888");*/ /*client.add(inputDocument); client.commit();*/ UpdateRequest updateRequest = new UpdateRequest(); updateRequest.setBasicAuthCredentials("name","123456"); String query = "id:77777"; updateRequest.deleteByQuery(query); //UpdateResponse process = updateRequest.process(client, "test"); updateRequest.commit(client, "test"); System.out.println("结束!"); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 条件查询试题类 */ public static void queryQuestionByContentFromSolr() { try { String sqStr = "角色名称77777888889"; ModifiableSolrParams params = new ModifiableSolrParams(); params.set(HttpClientUtil.PROP_BASIC_AUTH_USER, "name"); params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, "123456"); CloseableHttpClient closeableHttpClient = HttpClientUtil.createClient(params); HttpSolrClient.Builder builer = new HttpSolrClient.Builder("http://192.168.0.222:8983/solr/test/").withHttpClient(closeableHttpClient); SolrClient client = builer.build(); SolrQuery sq = new SolrQuery(); sq.set("q", "QUESTION_STEM:"+sqStr); //sq.addFilterQuery("GRADE:"+null); //sq.addFilterQuery("COURSE:0005"); //sq.setRows(5); QueryResponse response = client.query(sq); SolrDocumentList list = response.getResults(); for (SolrDocument solrDocument : list) { String QUESTION_ID = (String) solrDocument.getFirstValue("QUESTION_ID"); String QUESTION_STEM = (String) solrDocument.getFirstValue("QUESTION_STEM"); //String GRADE = (String) solrDocument.getFirstValue("GRADE"); //String COURSE = (String) solrDocument.getFirstValue("COURSE"); //System.out.println("GRADE:"+GRADE+"-COURSE:"+COURSE+"-QUESTION:"+QUESTION_ID + "-" + QUESTION_STEM); System.out.println("QUESTION:"+QUESTION_ID + "-" + QUESTION_STEM); } client.close(); System.out.println("结束!"); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }} 参考:
solr 安装和使用_solr安装-CSDN博客
手把手教你 对 solr8 配置用户登录验证_solrj 8 认证-CSDN博客
手把手教你 对 solr8 配置用户登录验证_solrj 8 认证-CSDN博客
solr_使用中遇到的问题(内存不足)_solr内存不足-CSDN博客
上一篇:公网ip服务器怎么搭建的?