Solr有一个客户端SolrJ

创建一个Java Project

引入Jar包

添加test类

package com.solr.test;

import java.io.IOException;
import java.util.List; import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument; import com.solr.entity.Person; public class SolrJTest {
//指定solr服务器的地址
private final static String SOLR_URL = "http://localhost:8080/solr/"; /**
* 创建SolrServer对象
*
* 该对象有两个可以使用,都是线程安全的
* 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的
* 2、 EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了
* 3、solr 4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
*
* @return
*/
public HttpSolrClient createSolrServer(){
HttpSolrClient solr = null;
solr = new HttpSolrClient(SOLR_URL);
return solr;
} /**
* 往索引库添加文档
* @throws IOException
* @throws SolrServerException
*/
public void addDoc() throws SolrServerException, IOException{
//构造一篇文档
SolrInputDocument document = new SolrInputDocument();
//往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
document.addField("id", "8");
document.addField("name", "周新星");
document.addField("description", "一个灰常牛逼的军事家");
//获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core
HttpSolrClient solr = new HttpSolrClient(SOLR_URL + "my_core");
solr.add(document);
solr.commit();
solr.close();
} /**
* 根据id从索引库删除文档
*/
public void deleteDocumentById() throws Exception {
//选择具体的某一个solr core
HttpSolrClient server = new HttpSolrClient(SOLR_URL+"my_core");
//删除文档
server.deleteById("8");
//删除所有的索引
//solr.deleteByQuery("*:*");
//提交修改
server.commit();
server.close();
} /**
* 查询
* @throws Exception
*/
public void querySolr() throws Exception{
HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL+"my_core/");
SolrQuery query = new SolrQuery();
//下面设置solr查询参数
//query.set("q", "*:*");// 参数q 查询所有
query.set("q","周星驰");//相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来 ,这个作用适用于联想查询 //参数fq, 给query增加过滤查询条件
query.addFilterQuery("id:[0 TO 4]");//id为0-4 //给query增加布尔过滤条件
//query.addFilterQuery("description:演员"); //description字段中含有“演员”两字的数据 //参数df,给query设置默认搜索域
query.set("df", "name"); //参数sort,设置返回结果的排序规则
query.setSort("id",SolrQuery.ORDER.desc); //设置分页参数
query.setStart(0);
query.setRows(10);//每一页多少值 //参数hl,设置高亮
query.setHighlight(true);
//设置高亮的字段
query.addHighlightField("name");
//设置高亮的样式
query.setHighlightSimplePre("<font color='red'>");
query.setHighlightSimplePost("</font>"); //获取查询结果
QueryResponse response = solrServer.query(query);
//两种结果获取:得到文档集合或者实体对象 //查询得到文档的集合
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("通过文档集合获取查询的结果");
System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
//遍历列表
for (SolrDocument doc : solrDocumentList) {
System.out.println("id:"+doc.get("id")+" name:"+doc.get("name")+" description:"+doc.get("description"));
} //得到实体对象
List<Person> tmpLists = response.getBeans(Person.class);
if(tmpLists!=null && tmpLists.size()>0){
System.out.println("通过文档集合获取查询的结果");
for(Person per:tmpLists){
System.out.println("id:"+per.getId()+" name:"+per.getName()+" description:"+per.getDescription());
}
}
} public static void main(String[] args) throws Exception {
SolrJTest solr = new SolrJTest();
//solr.createSolrServer();
solr.addDoc();
//solr.deleteDocumentById();
//solr.querySolr();
}
}

查询结果:

通过文档集合获取查询的结果
查询结果的总数量:3
id:3 name:周节能 description:台湾著名歌手,号称音乐天王
id:2 name:周润发 description:香港著名演员
id:1 name:周星驰 description:香港著名喜剧演员

Solr——Java应用的更多相关文章

  1. Solr JAVA客户端SolrJ 4.9使用示例教程

    http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...

  2. solr java demo 基础入门

      <!--solr的maven依赖--> <dependencies> <dependency> <groupId>org.apache.solr&l ...

  3. solr java代码

    添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  4. Solr JAVA客户端SolrJ的使用

    一.Solrj简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底 ...

  5. solr java api 使用solrj操作zookeeper集群中的solrCloud中的数据

    1 导入相关的pom依赖 <dependencies> <dependency> <groupId>org.apache.solr</groupId> ...

  6. Solr java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect to this MySQL server

    在用solr从mysql导入数据的时候,因为linux和本机的数据库不在同一个ip段上, 又因为本地的mysql没有设置远程其它ip可以访问所以就报了如下错误 解决办法: 在mysql任意可以输入查询 ...

  7. 【solr】java整合solr5.0之solrj的使用

    1.首先导入solrj需要的的架包 2.需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schem ...

  8. solr 安装

    1:solr简介 solr是一个开源的搜索引擎,是对lucene做了封装,对外提供类似于webservice接口, 可以使用http请求的方式对solr进行操作. lucene.solr.elasti ...

  9. solr4.3 java.lang.NumberFormatException

    solr java.lang.NumberFormatException 现象:定时每天全量,每隔5分钟增量DIH从mysql导入数据 solr4j返回加过Id列表,一天偶然出现 java.lang. ...

随机推荐

  1. 关于socket buffer size的调优

    为了达到最大网络吞吐,socket send buffer size(SO_SNDBUF)不应该小于带宽和延迟的乘积.之前我遇到2个性能问题,都和SO_SNDBUF设置得太小有关.但是,写程序的时候可 ...

  2. PHP学习(3)——数据的存储与检索

    要点目录: I.保存数据 II.打开文件   III.创建并写入文件 IV.关闭文件 V.读文件 VI.给文件加锁 VII.删除文件 VIII.其他有用的文件操作函数 IX.数据库管理系统 1.保存数 ...

  3. Job的运行过程

    Job的运行过程 Job的具体运行过程 a) 运行mapred程序 b) 本次运行将生成一个Job,于是JobClient向JobTracker(ResourceManager)申请一个JobId以标 ...

  4. Angular中ngx-image-cropper图片裁剪的使用

    GitHub示例源码地址:https://github.com/luoruiemail/ngx-image-cropper 下载下来之后,执行yarn install安装相关node_modules包 ...

  5. 详解vue 路由跳转四种方式 (带参数)

    详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 ...

  6. Spring4学习回顾之路02—IOC&DI

    IOC&DI介绍 ●IOC:(Inversion of Control) :控制反转(反向获取资源) 其思想是反转资源获取的方向.传统的资源上查找方式要求组件向容器发起请求查找资源,作为回应, ...

  7. 状压DP--Rotate Columns (hard version)-- Codeforces Round #584 - Dasha Code Championship - Elimination Round (rated, open for everyone, Div. 1 + Div. 2)

    题意:https://codeforc.es/problemset/problem/1209/E2 给你一个n(1-12)行m(1-2000)列的矩阵,每一列都可以上下循环移动(类似密码锁). 问你移 ...

  8. Web前端开发JavaScript基础

    JavaScript 一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它的解释器被称为JavaScript引擎,是浏览器的一部分,并且是被广泛用于客户端的脚本语言,JavaS ...

  9. Git 学习笔记之(三)将本地工程导入到GitHub 仓库中

    一:操作步骤第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令,此命令会在当前目录下创建一个.git文件夹. git init 第二步:将项目的所有文件添加到仓库中 git add . ...

  10. VPS磁盘划分建立新磁盘

    今天我们来教下大家拿到VPS后,如何划分电脑内的磁盘空间.很多朋友可能遇到拿到VPS,为什么会打开电脑后在电脑盘那看到就一个C盘.还有些用户以为怎么只有那小的磁盘空间啊!怎么和卖的不一样啊!其实了我们 ...