solr7.4.0+mysql+solrj(简而优美)
目录:
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 并在浏览器下能访问到下图所示则表示访问成功

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

新创建core\核心的目录位置
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下


2.2 配置连接信息
把solr-7.4.0\example\example-DIH\solr\db下的文件复制到你创建的core里面 --> solr-7.4.0\server\solr\bless


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

我的数据库表信息

db-data-config.xml配置数据库连接信息
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3307/leslia" user="root" password="root" />
<document>
<entity name="bless" query="select * from bless">
<field column="bless_id" name="id" />
<field column="bless_content" name="blessContent" />
<field column="bless_time" name="blessTime"/>
</entity>
</document>
</dataConfig>
这个地方要注意一下 ,field主键必须设置为name="id",否则solr找不到主键会出现问题,为什么?看一下managed-schema配置文件中的这个主键配置

然后去managed-schema里配置对应的field字段,这个也可以在管理端直接添加,也可以手动修改配置文件,name属性要与db-data-config.xml 文件中name属性一致
<field name="blessContent" type="text_general" indexed="true" stored="true"/>
<field name="blessTime" type="pdate" indexed="true" stored="true"/>
好了配置完毕。重启solr,导入数据

查询数据库记录是否导入

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

修改conf/managed-schema 添加如下配置信息,并重新启动solr
<!-- ChineseAnalyzer -->
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>
使用中文分析

不使用中文分析

给数据库字段配置中文分析,需要修改managed-schema配置文件 type="text_ik",具体应用本教程不再涉及。
<field name="blessContent" type="text_ik" indexed="true" stored="true"/>
<field name="blessTime" type="pdate" indexed="true" stored="true"/>
3 solrj JAVA客户端应用
solrJ是访问Solr服务的JAVA客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过solrJ的API接口操作Solr服务。
示例数据还是应用上面mysql数据库导入的
3.1 solrj 构建和运行
添加maven依赖
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.4.0</version>
</dependency>
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();
}
测试信息

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();
}
在管理端查看一下刚才添加的信息

3.2.3 solrj 删除 删除有3种方式
@Test
public void solrDelete() throws Exception{
//1 通过id 删除
client.deleteById("1");
//2 通过id List 删除
ArrayList<String> ids = new ArrayList<String>();
ids.add("2");
ids.add("3");
client.deleteById(ids);
//3 通过 查询信息删除
client.deleteByQuery("id:4");
// 提交
client.commit();
// 关闭资源
client.close();
}
3.3 solrj javaBean 整合应用
SolrJ支持通过每个实例变量在Java对象可以映射到一个相应的Solr字段中,使用 @Field注解隐式转换文档与任何类。field注解。
| solr的fieldtype属性 | javaBean 属性类型 |
| string | String |
| boolean | Boolean |
| pint | Integer |
| pdouble | Double |
| plong | Long |
| pfloat | Float |
| pdate | Date |
创建实体类:
public class Bless {
@Field
private String id;
@Field
private String blessContent;
@Field
private Date blessTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBlessContent() {
return blessContent;
}
public void setBlessContent(String blessContent) {
this.blessContent = blessContent;
}
public Date getBlessTime() {
return blessTime;
}
public void setBlessTime(Date blessTime) {
this.blessTime = blessTime;
}
}
3.3.1 solrj + javaBean 查询
@Test
public void queryBean() 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文档
List<Bless> 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 增加
@Test
public void addBean() throws Exception{
Bless bless=new Bless();
bless.setId("19");
bless.setBlessContent("solr java bean add");
bless.setBlessTime(new Date());
//添加对象
UpdateResponse response = client.addBean(bless);
//提交操作
client.commit();
//关闭资源
client.close();
}
至此,solr 简单应用已经介绍完毕。本篇文章属于简单优美型,并未深入探索,希望能帮助到各位同学。如需帮助可在博客下方留言。
solr7.4.0+mysql+solrj(简而优美)的更多相关文章
- (五)solr7.1.0之solrJ的使用
(五)solr7.1.0之solrJ的使用 下面是solr7的官网API介绍: 网页翻译的不是很准确,只能了解个大概,基本能获取如下信息: 一.构建和运行SolrJ应用程序 对于用Maven构建的项目 ...
- centos 7 安装solr7.3.0 配置mysql
1.下载solr :wget http://archive.apache.org/dist/lucene/solr/7.3.0/solr-7.3.0.tgz 或者去官网自己下:http://arc ...
- CentOS7.5 Linux搭建全文检索--Solr7.4.0单机服务
一.Solr安装环境 1.官方参考文档 Solr教程参考指南:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html 2.Solr运行环境 ...
- (二)部署solr7.1.0到tomcat
solr7.1.0部署到tomcat8 官方表示solr5之后的版本不再提供对第三方容器的支持(不提供war包了). "旧式"solr.xml格式不再支持,核心必须使用core.p ...
- (一)windows7下solr7.1.0默认jetty服务器环境搭建
windows7下solr7.1.0默认jetty服务器环境搭建 1.下载solr solr7官网地址:http://lucene.apache.org/solr/ jdk8官网地址:http://w ...
- Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)
SQL语句类似下面这样:(此方法仅适用于5.0.0<mysql<5.6.6的版本) SELECT field FROM table WHERE id > 0 ORDER BY id ...
- solr7.1.0学习笔记(10)---Solr发布到Tomcat
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_39082031/article/details/79069554 将solr作为一个单 ...
- Solr——Windows下部署Solr7.5.0至jetty、Tomcat
Solr6用默认的Jetty启动 需要的软件支持 JDK1.8以上 Solr6的安装包(solr-7.5.0.zip ) Solr自带一个Jetty环境,可以很方便的运行Solr. 直接到解压缩的so ...
- CentOS7.5搭建Solr7.4.0单机服务
一.Solr安装环境 1.官方参考文档 Solr教程参考指南:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html 2.Solr运行环境 ...
随机推荐
- 13.9示例:有理数Rational类
要点提示:java提供了表示整数和浮点数的数据类型,但是没有提供表示有理数的数据类型. public Rational extends Number implements Comparable {}
- js实现页面下拉,区块(文字,图片等)左右淡入淡出效果
html: <div class="box"> <span class="historybox"> </span> < ...
- 合并N个长度为M的有序数组为一个N*M的有序数组
题目:合并N个有序数组,每个数组的长度为M,合并为N*M的有序数组.时间复杂度要求最低 解法:N个数组进行两两合并,合并后的数组再继续执行合并过程,最后合成N*M的有序数组.可以认为合并这个递归过程发 ...
- 发送 email (转)
<?phpnamespace app\common\controller;//基类class Email{ /* Public Variables */ var $smtp_port; var ...
- js 简单实现获取短信按钮倒计时60秒
<!DOCTYPE html><html lang="en"><head> <meta http-equiv="Content- ...
- git rebase(变基)操作
1.rebase(变基)操作 注意事项:rebase 改变分支的根源,绝对不要在与其他人共享的分支上进行操作rebase黄金法则:绝不要在公共的分支上使用它! 1.1git merge 与 git r ...
- bat自动创建快捷方式并更换图标
1 :: 此脚本主要的作用创建1.自动创建快捷方式:2.自动更换快捷方式图标 2 @echo off 3 >nul 2>&1 "%SYSTEMROOT%\system32 ...
- GO系列-ioutil包
ioutil包提供给外部使用的一共有1个变量,7个方法. // Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情 // 并且始终成功返回. var Disca ...
- POJ1456 Supermarket 题解
思维题. 关键在于如何想到用堆来维护贪心的策略. 首先肯定是卖出的利润越大的越好,但有可能当前这天选定了利润最大的很久才过期而利润第二大的第二天就过期,这时的策略就不优了. 所以我们必须动态改变策略, ...
- 关于ClassLoader 和Class的俩个记录
public class ZFBCheckAccountTask extends TaskThread { 断点 @CallerSensitive public ClassLoader getClas ...
