Solr——Java应用
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应用的更多相关文章
- Solr JAVA客户端SolrJ 4.9使用示例教程
http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...
- solr java demo 基础入门
<!--solr的maven依赖--> <dependencies> <dependency> <groupId>org.apache.solr&l ...
- solr java代码
添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
- Solr JAVA客户端SolrJ的使用
一.Solrj简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底 ...
- solr java api 使用solrj操作zookeeper集群中的solrCloud中的数据
1 导入相关的pom依赖 <dependencies> <dependency> <groupId>org.apache.solr</groupId> ...
- 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任意可以输入查询 ...
- 【solr】java整合solr5.0之solrj的使用
1.首先导入solrj需要的的架包 2.需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schem ...
- solr 安装
1:solr简介 solr是一个开源的搜索引擎,是对lucene做了封装,对外提供类似于webservice接口, 可以使用http请求的方式对solr进行操作. lucene.solr.elasti ...
- solr4.3 java.lang.NumberFormatException
solr java.lang.NumberFormatException 现象:定时每天全量,每隔5分钟增量DIH从mysql导入数据 solr4j返回加过Id列表,一天偶然出现 java.lang. ...
随机推荐
- java使用validator进行校验
不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空.长度.格式等等).如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程.幸好jdk或hib ...
- 【转】nosql的分类
1 键值数据库 相关产品:Redis.Riak.SimpleDB.Chordless.Scalaris.Memcached 形式:Key 指向 Value 的键值对,通常用hash table来实现 ...
- 【LOJ】#2983. 「WC2019」数树
LOJ2983. 「WC2019」数树 task0 有\(i\)条边一样答案就是\(y^{n - i}\) task1 这里有个避免容斥的方法,如果有\(i\)条边重复我们要算的是\(y^{n - i ...
- 【重启C++】 关于 【类】
1.什么是抽象类 带有纯虚函数成员的类,称为抽象类.抽象类不能被实例化,因为如果能实例化,调用这个纯虚的成员函数时怎么处理. 2.什么是纯虚函数 纯虚函数是在声明虚函数时被“初始化”为0的函数.声明纯 ...
- python3列表、元组
列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作.列表中的每个元素都分配一个数字也就是它的位置,或叫索引,第一个索引是0,第二个索引是1,依此类推. ...
- Python—格式化输出
Python提供了很多种格式化方式(包括但不限于以下几种): [,]分隔 name = 'jack' age = -0.5 print(name, 'is', age, 'years old.') j ...
- c#连接Java后台,处理返回的数据
首先定义共通文件,根据url连接Java后台 class ConntectUtil { public JObject ConsoleApplication(string appID, CustomDa ...
- Json-server在Vue 2.0中使用--build文件中没有dev-server文件
跟大佬的视频使用json-server模拟后台数据调用,发现build文件中并没有dev-server.js. 新版的vue-cli取消了dev-server.js和dev-client.js 改 ...
- 第一章 PHP mySQL
一,服务器环境搭建 1-1.Apache服务器.(端口号定义,http协议,开启和关闭) 服务器: 我们在浏览器浏览网页的时候,在地址栏中都会产生一个url.通过这个url,浏览器从互联网中找到一个网 ...
- parseInt()、Number()区别
parseInt从头解析string为整数,在遇到不能解析的字符时就返回已经解析的整数部分,如果第一个字符就不能解析,就直接返回NaN. Number如果无法转换为数字,就返回NaN.像“123a”, ...