solrj mysql_solr7.4.0+mysql+solrj(简而优美)

本文详细介绍了如何部署Solr7,创建核心并连接MySQL数据库,配置中文分析器,以及使用SolrJ进行数据的增删改查操作。首先,通过启动独立模式的Solr并创建核心,然后导入MySQL驱动和相关jar包,配置数据库连接信息。接着,配置中文分析器,使Solr支持中文搜索。最后,展示了如何使用SolrJ进行Java客户端操作,包括查询、添加、修改和删除数据,并演示了与JavaBean的整合应用。
摘要由CSDN通过智能技术生成

目录:

1 solr7部署+创建核心

2 solr mysql 连接

2.1 导入相关 jar包

2.2 配置连接信息

2.3 配置中文分析器

3 solrj JAVA客户端应用

3.1 solrj 构建和运行

3.2 solrj 应用(数据的 增、删、改、查)

3.3 solrj JavaBean 整合应用

1 solr7部署+创建核心

solr7需要java8环境,且需要在环境变量中添加 JAVA_HOME变量。

solr有两种启动模式:

独立模式:适用于数据规模不大的场景

云模式:适用于数据规模大,高可靠、高可用、高并发的场景,基于zookeeper中间件

独立模式是以 (core/核心) 来管理,云模式是以(collection/集合)来管理。

本教程使用独立模式,请到apache官网下载压缩包windows版,solr-7.4.0.zip / 压缩到本地

cd solr-7.4.0/bin/  常用命令:

solr.cmd start    启动 默认端口:8983

solr.cmd stop -all  停止

solr.cmd create -c [options]  创建核心

solr.cmd status 运行状态

首先启动solr  执行命令 solr.cmd start  并在浏览器下能访问到下图所示则表示访问成功

daeb77b6a137335cbb17b346ca96e76b.png

然后创建核心 ,这里我的核心名字叫bless   solr.cmd start -c bless 。下图表示创建成功

13efe4b81884ba8f322a05aabc94ccb3.png

新创建core\核心的目录位置

09f699609cd0b5d1378fa25c61f456c3.png

2 solr mysql 连接

2.1 导入相关 jar包

2.1.1  下载 mysql 驱动包:mysql-connector-java-x.x.x.jar

2.1.2  将 mysql 驱动包导入 solr :将下载下来的 mysql-connector-java-x.x.x.jar 拷贝到 solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib 下;

2.1.3  将solr{home}\dist目录下的:solr-dataimporthandler-7.4.0.jar和solr-dataimporthandler-extras-7.4.0.jar这两个jar包拷贝到 solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib下

293cd4e7cfae2b63589b3021a23d97da.png

3495c2e67de0294f68fe4f7108ae7505.png

2.2 配置连接信息

把solr-7.4.0\example\example-DIH\solr\db下的文件复制到你创建的core里面 --> solr-7.4.0\server\solr\bless

94de906cb993efbc58ba8923e7ccd69c.png

c49530c159ee20ca1d14169144484886.png

打开conf目录在db-data-config.xml和managed-schema中进行配置

48f03c31e8dad03757b9f3f81002b261.png

我的数据库表信息

9ac0a66ab7b8310c07f3bc79d08ee268.png

db-data-config.xml配置数据库连接信息

这个地方要注意一下 ,field主键必须设置为name="id",否则solr找不到主键会出现问题,为什么?看一下managed-schema配置文件中的这个主键配置

26006ba9061b6945da0d36b3dabe44fc.png

然后去managed-schema里配置对应的field字段,这个也可以在管理端直接添加,也可以手动修改配置文件,name属性要与db-data-config.xml 文件中name属性一致

好了配置完毕。重启solr,导入数据

375a53b1f41022c6c60578dcc0ac33e8.png

查询数据库记录是否导入

6c536dae890dc5f6c1cd05d2d02f5bdf.png

2.3 配置中文分析器

在solr-7.4.0/contrib/analysis-extras/lucene-libs下找到lucene-analyzers-smartcn-7.4.0.jar  copy 到 solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib

1ff75dda2e92fc5f7ae43600749686d6.png

修改conf/managed-schema 添加如下配置信息,并重新启动solr

使用中文分析

3ed769dec505d51252ce3b6c66b89521.png

不使用中文分析

32188e973bc7fd0d7976903c30124c1b.png

给数据库字段配置中文分析,需要修改managed-schema配置文件 type="text_ik",具体应用本教程不再涉及。

3  solrj JAVA客户端应用

solrJ是访问Solr服务的JAVA客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过solrJ的API接口操作Solr服务。

示例数据还是应用上面mysql数据库导入的

3.1 solrj 构建和运行

添加maven依赖

org.apache.solr

solr-solrj

7.4.0

3.2 solrj 应用(数据的 增、删、改、查)

获取HttpSolrClient 连接

private static final String solrUrl="http://localhost:8983/solr/bless";

//创建solrClient同时指定超时时间,不指定走默认配置

private static HttpSolrClient client=new HttpSolrClient.Builder(solrUrl)

.withConnectionTimeout(10000)

.withSocketTimeout(60000).build();

3.2.1 solrj 查询

@Test

public void querySolr() throws Exception{

//封装查询参数

SolrQuery query = new SolrQuery("*:*");

//添加需要回显得内容

query.addField("id");

query.addField("blessContent");

query.addField("blessTime");

query.setRows(20);//设置每页显示多少条

//执行查询返回QueryResponse

QueryResponse response = client.query(query);

//获取doc文档

SolrDocumentList documents = response.getResults();

for(SolrDocument solrDocument:documents){

System.out.println(solrDocument.get("id"));

System.out.println(solrDocument.get("blessContent"));

System.out.println(solrDocument.get("blessTime"));

}

//关闭资源

client.close();

}

测试信息

196b32c2cb98e4fd9db2920e3ea6c723.png

3.2.2 solrj 增加/修改     修改是id不变其他字段变更

@Test

public void solrAdd() throws Exception{

//创建文档doc

SolrInputDocument doc = new SolrInputDocument();

doc.addField("id", 21);

doc.addField("blessContent", "solrj add");

doc.addField("blessTime",new Date());

//添加到client

UpdateResponse updateResponse = client.add(doc);

//索引文档必须commit

client.commit();

}

在管理端查看一下刚才添加的信息

b5ba3fbff2f0b9ea658d9aa060be74e1.png

3.2.3 solrj 删除  删除有3种方式

@Test

public void solrDelete() throws Exception{

//1 通过id 删除

client.deleteById("1");

//2 通过id List 删除

ArrayList ids = new ArrayList();

ids.add("2");

ids.add("3");

client.deleteById(ids);

//3 通过 查询信息删除

client.deleteByQuery("id:4");

// 提交

client.commit();

// 关闭资源

client.close();

}

3.3 solrj  javaBean 整合应用

SolrJ支持通过@Field注解隐式转换文档与任何类。每个实例变量在Java对象可以映射到一个相应的Solr字段中,使用 field注解。

solr的fieldtype属性

javaBean 属性类型

string

String

boolean

Boolean

pint

Integer

pdouble

Double

plong

Long

pfloat

Float

pdate

Date

创建实体类:

public classBless {

@FieldprivateString id;

@FieldprivateString blessContent;

@FieldprivateDate blessTime;publicString getId() {returnid;

}public voidsetId(String id) {this.id =id;

}publicString getBlessContent() {returnblessContent;

}public voidsetBlessContent(String blessContent) {this.blessContent =blessContent;

}publicDate getBlessTime() {returnblessTime;

}public voidsetBlessTime(Date blessTime) {this.blessTime =blessTime;

}

}

3.3.1 solrj + javaBean 查询

@Testpublic void queryBean() throwsException{

SolrQuery query= new SolrQuery("*:*");//添加需要回显得内容

query.addField("id");

query.addField("blessContent");

query.addField("blessTime");

query.setRows(20);//设置每页显示多少条//执行查询返回QueryResponse

QueryResponse response =client.query(query);//获取doc文档

List blessList=response.getBeans(Bless.class);for(Bless bless:blessList){

System.out.println(bless.getId());

System.out.println(bless.getBlessContent());

System.out.println(bless.getBlessTime());

}

client.close();

}

3.3.2 solrj + javaBean 增加

@Testpublic void addBean() throwsException{

Bless bless=newBless();

bless.setId("19");

bless.setBlessContent("solr java bean add");

bless.setBlessTime(newDate());//添加对象

UpdateResponse response =client.addBean(bless);//提交操作

client.commit();//关闭资源

client.close();

}

至此,solr 简单应用已经介绍完毕。本篇文章属于简单优美型,并未深入探索,希望能帮助到各位同学。如需帮助可在博客下方留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值