目录:

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配置数据库连接信息

  1. <dataConfig>
  2. <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3307/leslia" user="root" password="root" />
  3. <document>
  4. <entity name="bless" query="select * from bless">
  5. <field column="bless_id" name="id" />
  6. <field column="bless_content" name="blessContent" />
  7. <field column="bless_time" name="blessTime"/>
  8. </entity>
  9. </document>
  10. </dataConfig>

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

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

  1. <field name="blessContent" type="text_general" indexed="true" stored="true"/>
  2. <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

  1. <!-- ChineseAnalyzer -->
  2. <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
  3. <analyzer type="index">
  4. <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
  5. </analyzer>
  6. <analyzer type="query">
  7. <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
  8. </analyzer>
  9. </fieldType>

使用中文分析

不使用中文分析

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

  1. <field name="blessContent" type="text_ik" indexed="true" stored="true"/>
  2. <field name="blessTime" type="pdate" indexed="true" stored="true"/>

3  solrj JAVA客户端应用

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

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

3.1 solrj 构建和运行

添加maven依赖

  1. <dependency>
  2. <groupId>org.apache.solr</groupId>
  3. <artifactId>solr-solrj</artifactId>
  4. <version>7.4.0</version>
  5. </dependency>

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

获取 HttpSolrClient 连接

  1. private static final String solrUrl="http://localhost:8983/solr/bless";
  2.  
  3. //创建solrClient同时指定超时时间,不指定走默认配置
  4. private static HttpSolrClient client=new HttpSolrClient.Builder(solrUrl)
  5. .withConnectionTimeout(10000)
  6. .withSocketTimeout(60000).build();

3.2.1 solrj 查询

  1. @Test
  2. public void querySolr() throws Exception{
  3. //封装查询参数
  4. SolrQuery query = new SolrQuery("*:*");
  5. //添加需要回显得内容
  6. query.addField("id");
  7. query.addField("blessContent");
  8. query.addField("blessTime");
  9. query.setRows(20);//设置每页显示多少条
  10. //执行查询返回QueryResponse
  11. QueryResponse response = client.query(query);
  12. //获取doc文档
  13. SolrDocumentList documents = response.getResults();
  14. for(SolrDocument solrDocument:documents){
  15. System.out.println(solrDocument.get("id"));
  16. System.out.println(solrDocument.get("blessContent"));
  17. System.out.println(solrDocument.get("blessTime"));
  18. }
  19. //关闭资源
  20. client.close();
  21. }

测试信息

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

  1. @Test
  2. public void solrAdd() throws Exception{
  3. //创建文档doc
  4. SolrInputDocument doc = new SolrInputDocument();
  5. doc.addField("id", 21);
  6. doc.addField("blessContent", "solrj add");
  7. doc.addField("blessTime",new Date());
  8. //添加到client
  9. UpdateResponse updateResponse = client.add(doc);
  10. //索引文档必须commit
  11. client.commit();
  12. }

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

 3.2.3 solrj 删除  删除有3种方式

  1. @Test
  2. public void solrDelete() throws Exception{
  3. //1 通过id 删除
  4. client.deleteById("1");
  5. //2 通过id List 删除
  6. ArrayList<String> ids = new ArrayList<String>();
  7. ids.add("2");
  8. ids.add("3");
  9. client.deleteById(ids);
  10. //3 通过 查询信息删除
  11. client.deleteByQuery("id:4");
  12. // 提交
  13. client.commit();
  14. // 关闭资源
  15. client.close();
  16. }

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

创建实体类:

  1. public class Bless {
  2.  
  3. @Field
  4. private String id;
  5.  
  6. @Field
  7. private String blessContent;
  8.  
  9. @Field
  10. private Date blessTime;
  11.  
  12. public String getId() {
  13. return id;
  14. }
  15.  
  16. public void setId(String id) {
  17. this.id = id;
  18. }
  19.  
  20. public String getBlessContent() {
  21. return blessContent;
  22. }
  23.  
  24. public void setBlessContent(String blessContent) {
  25. this.blessContent = blessContent;
  26. }
  27.  
  28. public Date getBlessTime() {
  29. return blessTime;
  30. }
  31.  
  32. public void setBlessTime(Date blessTime) {
  33. this.blessTime = blessTime;
  34. }
  35.  
  36. }

3.3.1 solrj + javaBean 查询

  1. @Test
  2. public void queryBean() throws Exception{
  3. SolrQuery query = new SolrQuery("*:*");
  4. //添加需要回显得内容
  5. query.addField("id");
  6. query.addField("blessContent");
  7. query.addField("blessTime");
  8. query.setRows(20);//设置每页显示多少条
  9. //执行查询返回QueryResponse
  10. QueryResponse response = client.query(query);
  11. //获取doc文档
  12. List<Bless> blessList=response.getBeans(Bless.class);
  13. for(Bless bless:blessList){
  14. System.out.println(bless.getId());
  15. System.out.println(bless.getBlessContent());
  16. System.out.println(bless.getBlessTime());
  17. }
  18. client.close();
  19. }

3.3.2 solrj + javaBean 增加

  1. @Test
  2. public void addBean() throws Exception{
  3. Bless bless=new Bless();
  4. bless.setId("19");
  5. bless.setBlessContent("solr java bean add");
  6. bless.setBlessTime(new Date());
  7. //添加对象
  8. UpdateResponse response = client.addBean(bless);
  9. //提交操作
  10. client.commit();
  11. //关闭资源
  12. client.close();
  13. }

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

solr7.4.0+mysql+solrj(简而优美)的更多相关文章

  1. (五)solr7.1.0之solrJ的使用

    (五)solr7.1.0之solrJ的使用 下面是solr7的官网API介绍: 网页翻译的不是很准确,只能了解个大概,基本能获取如下信息: 一.构建和运行SolrJ应用程序 对于用Maven构建的项目 ...

  2. 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 ...

  3. CentOS7.5 Linux搭建全文检索--Solr7.4.0单机服务

    一.Solr安装环境 1.官方参考文档 Solr教程参考指南:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html 2.Solr运行环境 ...

  4. (二)部署solr7.1.0到tomcat

    solr7.1.0部署到tomcat8 官方表示solr5之后的版本不再提供对第三方容器的支持(不提供war包了). "旧式"solr.xml格式不再支持,核心必须使用core.p ...

  5. (一)windows7下solr7.1.0默认jetty服务器环境搭建

    windows7下solr7.1.0默认jetty服务器环境搭建 1.下载solr solr7官网地址:http://lucene.apache.org/solr/ jdk8官网地址:http://w ...

  6. 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 ...

  7. solr7.1.0学习笔记(10)---Solr发布到Tomcat

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_39082031/article/details/79069554 将solr作为一个单 ...

  8. Solr——Windows下部署Solr7.5.0至jetty、Tomcat

    Solr6用默认的Jetty启动 需要的软件支持 JDK1.8以上 Solr6的安装包(solr-7.5.0.zip ) Solr自带一个Jetty环境,可以很方便的运行Solr. 直接到解压缩的so ...

  9. CentOS7.5搭建Solr7.4.0单机服务

    一.Solr安装环境 1.官方参考文档 Solr教程参考指南:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html 2.Solr运行环境 ...

随机推荐

  1. 包机制与javaDOC文档

    包机制 包的本质就是个文件夹: 一般利用公司域名倒置作为包名:com.kuangstudy.biog javaDOC文档 package com.kuang.base; /** * @author K ...

  2. 以对话的形式管理你的Kubernetes集群

    BotKube BotKube 是一个用于监控和调试 Kubernetes 集群的消息传递工具. BotKube 可以与多个消息传递平台(如 Slack.Mattermost 或 Microsoft ...

  3. Linux | Linux常用指令学习笔记

    @ 目录 前言 1. Linux目录结构: 2. 运行级别: init.systemctl 3. vim相关快捷键: 4. 开关机相关命令: shutdowm.halt.reboot.sync.log ...

  4. Spring:Spring的各jar包依赖及作用详解

    spring-core.jar(必须有的核心jar包) 这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己 ...

  5. Spring:Spring优势——分层架构简介

    Spring框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration.Web.AOP.Aspects.Messaging.Instrume ...

  6. hadoop学习(一)环境的搭建

    1.安装几台Linux虚拟机.安装的过程就不赘述了,网上教程很多.win7系统上装了一个VMWare,因为一些原因,VMWare版本不是最新的,是VMWare7.1版本,由于VMWare版本不高,所以 ...

  7. 查看python的安装版本,位数及安装路径

    一.想要查看ubuntu中安装的Python路径 方法一:whereis python (用来快速查找任何文件,是一个文件搜索命令,与locate的功能一样.执行whereis python 会将所有 ...

  8. bugku Crypto 下半部分wp

    1. 百度托马斯这个人居然还发明了一种轮转的加密法,发现原理是,他将很多行乱序的26个字母,插到一根柱子上,参考糖葫芦的样子,可以旋转每一行,设置自己要发送的明文后,向对方发送乱码的一列,对方只要将这 ...

  9. Java笔记——方法

    ​  1.方法 (1)概念:①解决事情的办法②实现功能的代码段. (2)优点:①提到代码的复用性②便于后期维护.    (3)特点:①不调用不执行②方法不能嵌套,定义在类中方法外的位置. (4)定义方 ...

  10. ARC 122 简要题解

    ARC 122 简要题解 传送门 A - Many Formulae 考虑对于每个数分别算其贡献. 通过枚举该数前面的符号,借助一个非常简单的 \(\mathrm{DP}\)(\(f_{i,0/1}\ ...