东莞市盛裕绒艺玩具有限公司

东莞市盛裕绒艺玩具有限公司

亚搏娱乐app

15337447231
联系方式
全国服务热线: 15337447231

咨询热线:15190431784
联系人:李正
地址:海南省海口市龙华区国贸大道

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

来源:亚搏娱乐app   发布时间:2019-06-23   点击量:278

目录:

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.0serversolr-webappwebappWEB-INFlib 下;

2.1.3  将solr{home}dist目录下的:solr-dataimporthandler-7.4.0.jar和solr-dataimporthandler-extras-7.4.0.jar这两个jar包拷贝到 solr-7.4.0serversolr-webappwebappWEB-INFlib下

 

 

 

 

 

2.2 配置连接信息

把solr-7.4.0exampleexample-DIHsolrdb下的文件复制到你创建的core里面 --> solr-7.4.0serversolrless

 

打开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.0serversolr-webappwebappWEB-INFlib

修改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支持通过@Field注解隐式转换文档与任何类每个实例变量在Java对象可以映射到一个相应的Solr字段中,使用 field注解

solr的fieldtype属性javaBean 属性类型
stringString
booleanBoolean
pintInteger
pdoubleDouble
plongLong
pfloatFloat
pdateDate

 

 

 

 

 

 

 

 

创建实体类:

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

 

相关产品

COPYRIGHTS©2017 亚搏娱乐app ALL RIGHTS RESERVED 备案号:278