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 start
bin/solr start -force
bin/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

最文件末尾添加一下信息

<!-- ik分词器 -->
<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>

4.数据导入

进入/usr/local/solr/solr-8.2.0/server/solr/test/conf

vi managed-schema

 文件113行

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />下添加相关字

<field name="QUESTION_ID" type="text_ik" indexed="true" stored="true"/>
<field name="QUESTION_STEM" type="text_ik" indexed="true" stored="true"/>
<field name="sortField" type="string" indexed="true" stored="false" multiValued="false"/>
<copyField source="QUESTION_STEM" dest="sortField"/>

进入/usr/local/solr/solr-8.2.0/server/solr/test/conf/solrconfig.xml

87行添加:

<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />

文件最后添加

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst></requestHandler>

在/usr/local/solr/solr-8.2.0/server/solr/test/conf创建data-config.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"driver="com.mysql.jdbc.Driver"url="jdbc:mysql://192.168.0.72:8066/SSEP_RESOURCE"user="root"password="Mxjy#1105test"/>
<document><entity name="question" query="SELECT QUESTION_ID,QUESTION_STEM FROM trquestion_stem "><field column="QUESTION_ID" name="QUESTION_ID" /><field column="QUESTION_STEM" name="QUESTION_STEM" /></entity>
</document>
</dataConfig>

导入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中添加如下配置

<Get name="securityHandler">    <Set name="loginService">    <New class="org.eclipse.jetty.security.HashLoginService">    <Set name="name">verify—name</Set><Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/verify.properties</Set>    </New>    </Set>    </Get>

 修改/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/web.xml文件,在security-constraint后追加如下配置

<security-constraint><web-resource-collection><web-resource-name>Solr</web-resource-name><url-pattern>/</url-pattern></web-resource-collection>   <auth-constraint>      <role-name>admin</role-name></auth-constraint></security-constraint><login-config>      <auth-method>BASIC</auth-method><realm-name>verify-name</realm-name>   </login-config>

6.重启项目

启用和停用命令:在/usr/local/solr/solr-8.2.0目录中执行
强制启动:bin/solr start -force
强制停止:bin/solr stop -all

7.java使用solrj包进行增删改查

仓库坐标

<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>8.2.0</version>
</dependency>

测试用例如下

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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter配置远程访问的密码

安装 下载Anaconda的.sh文件后&#xff0c;上传到服务器&#xff0c;然后进行安装&#xff1a; chmod x anaconda.sh ./anaconda.sh创建虚拟环境 可以指定Python版本创建虚拟环境&#xff1a; conda create --name langchain python3.11.7 conda activate langchain conda …

【Web前端】JavaScript交互编程

1.与html控件交互 使用document.getElementById(id名)获取控件使用document.getElementById(id名).value 获取控件值使用document.getElementById(id名).value给定值 设置控件值 2.使用js改变css 通过document.getElementById(id值).style.css属性名值 改变css 通过 document.g…

ArcGIS如何计算地级市间的距离

一、数据准备 加载配套实验数据包中的地级市和行政区划矢量数据(订阅专栏后,从私信查收数据),如下图所示: 二、计算距离 1. 计算邻近表 ArcGIS提供了计算点和另外点之间距离的工具:分析工具→邻域分析→生成临近表。 计算一个或多个要素类或图层中的要素间距离和其他邻…

QT 静态单例与对象管理机制导致的指针重复释放问题

这是我在应用中发现的问题&#xff0c;以此记录下。 当我使用Qt创建一个单例dialog时&#xff0c;为了给其设置父对象&#xff0c;我使用了setParent(this)。但由于同时这个单例dialog是个静态对象&#xff0c;使得dialog对象指针被重复释放。 //在waitingdlg.h中 static Wai…

linux下脚本监控mysql主从同步异常时发邮件通知

在MySQL中&#xff0c;同步异常监控通常涉及监控复制的状态。可以通过查询SHOW SLAVE STATUS命令来获取复制的状态信息&#xff0c;并对其进行监控。以下是一个简单的SQL脚本&#xff0c;用于监控MySQL复制状态并输出异常信息&#xff1a; 查mysql slave状态 SHOW SLAVE STAT…

==与===的区别

在许多编程语言和脚本语言中&#xff0c;包括 JavaScript 和 PHP 等&#xff0c; 和 是用于比较值的操作符。 “” 是相等运算符&#xff0c;用于比较两个值是否相等。它比较值时会进行类型转换&#xff0c;如果两个值在类型转换后相等&#xff0c;那么它们就被认为是相等的。…

Spark云计算平台Databricks使用,第一个scala程序

1) 创建Spark计算集群 Spark云计算平台Databricks使用&#xff0c;创建workspace和cluster-CSDN博客 2) 创建notebook Workspace -> Users&#xff0c;选择用户&#xff0c;点击Create -> Notebook 选择集群&#xff0c;可以修改notebook名字 修改了notebook名字 选择S…

鸢尾花分类-pytorch实现

前言 本文用pytorch实现了鸢尾花分类&#xff0c;数据不多&#xff0c;只做代码展示用&#xff0c;后续有升级版本。 代码 -*- coding: utf-8 -*- File : main.py Author: Shanmh Time : 2024/05/06 上午9:37 Function&#xff1a;import torch from sklearn import datase…

【Spring】Spring 整合 Junit、MyBatis

一、 Spring 整合 Junit <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

Sql Server 2016数据库定时备份

一、 配置备份计划任务 选中“维护计划“--右键--“维护计划向导” 完成

遥控挖掘机之ESP8266调试心得(1)

ESP8266调试心得 1. 前言2.遇到的问题2.1 ESP8266模块建立TCP连接时候报错2.2 指令异常问题 3. 更新ESP8266固件3. ESP8266的部分AT指令3. 连接步骤3.1 模块与电脑连接3.2.1 电脑上的设置3.2.2 ESP8266模块作为客户机&#xff08;TCP Cilent&#xff09;的设置步骤 3.2 模块与模…

从开发角度理解漏洞成因(02)

文章目录 文件上传类需求文件上传漏洞 文件下载类需求文件下载漏洞 扩展 留言板类&#xff08;XSS漏洞&#xff09;需求XSS漏洞 登录类需求cookie伪造漏洞万能密码登录 持续更新中… 文章中代码资源已上传资源&#xff0c;如需要打包好的请点击PHP开发漏洞环境&#xff08;SQL注…

蓝桥杯 算法提高 ADV-1164 和谐宿舍 python AC

贪心&#xff0c;二分 同类型题&#xff1a;蓝桥杯 算法提高 ADV-1175 打包 def judge(x):wood 0max_val 0ans_len 0for i in ll:if i > x:return Falseelif max(max_val, i) * (ans_len 1) < x:max_val max(max_val, i)ans_len 1else:wood 1max_val ians_len …

贝塞尔曲线 java

参考文章&#xff1a; 理解贝塞尔曲线https://blog.csdn.net/weixin_42301220/article/details/125167672 代码实现参考 https://blog.csdn.net/yinhun2012/article/details/118653732 贝塞尔 一二三阶java代码实现,N阶段可以通过降阶递归实现 public class Test extends JPan…

java选择结构语句

文章目录 Java选择结构语句的几种形式1. **if 单选择结构**:2. **if-else 双选择结构**:3. **if-else if 多选择结构**:4. **switch 选择结构**: Java 12及更高版本的Switch Expressions返回值的Switch表达式yield关键字使用Switch作为语句或表达式 Pattern Matching for insta…

Final Draft 12 for Mac:高效专业剧本创作软件

对于剧本创作者来说&#xff0c;一款高效、专业的写作工具是不可或缺的。Final Draft 12 for Mac就是这样一款完美的选择。这款专为Mac用户设计的剧本创作软件&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;让您的剧本创作更加得心应手。 Final Draft 12支持多种剧本格…

【C++】CentOS环境搭建-编译安装Boost库(附CMAKE编译文件)

【C】环境搭建-编译安装Boost库 Boost库简介Boost库安装通过YUM安装&#xff08;版本较低 V1.53.0&#xff09;通过编译安装&#xff08;官网最新版本1.85.0&#xff09;1.安装相关依赖2.查询官网下载最新安装包并解压3.编译Boost4.安装Boost库到系统路径 Boost库验证 Boost库简…

(22.12.20)matlab2022+yalmip+cplex安装教程,win11 x64

前言 Hi,你好&#xff01;最近刚刚更换新的电脑设备&#xff0c;安装软件时尽量选择最新版本&#xff0c;但也遇到了大大小小的安装问题&#xff0c;这里把踩到的坑一并总结出来&#xff0c;给出一份还算合理的MATLAByalmipCPLEX安装教程&#xff08;win11&#xff09;。 MAT…

从零入门激光SLAM(十三)——LeGo-LOAM源码超详细解析4

大家好呀&#xff0c;我是一个SLAM方向的在读博士&#xff0c;深知SLAM学习过程一路走来的坎坷&#xff0c;也十分感谢各位大佬的优质文章和源码。随着知识的越来越多&#xff0c;越来越细&#xff0c;我准备整理一个自己的激光SLAM学习笔记专栏&#xff0c;从0带大家快速上手激…

OBS插件--视频回放

视频回放 视频回放是一款源插件&#xff0c;它可以将指定源的视频缓存一段时间&#xff08;时间可以设定&#xff09;&#xff0c;将缓存中的视频添加到当前场景中后&#xff0c;可以快速或慢速不限次数的回放。这个功能在类似体育比赛的直播中非常有用&#xff0c;可以捕获指…