java代码操作solr搜索引擎的增删查改
所需的包如图:

代码如下:
package solr;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Before;
import org.junit.Test;
public class test {
private static final String URL = "http://localhost:8983/solr/test/";
private HttpSolrClient server = null;
/*
* 初始化
*/
@Before
public void init() {
// 创建 server
server = new HttpSolrClient(URL);
}
/*
* 添加、修改索引
*/
@Test
public void addDoc() {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "4");
doc.addField("title", "号外!号外!特别喜讯");
doc.addField("content", "王部长今天把solr关键应用点全部贯通,希望在以后的学习生涯再接再厉。");
try {
//如果不存在,就添加;如果存在,就更改
UpdateResponse response = server.add(doc);
//一定要提交
server.commit();
System.out.println("Query Time :" + response.getQTime());
System.out.println("Elapsed Time :" + response.getElapsedTime());
System.out.println("Status :" + response.getStatus());
} catch (Exception e) {
System.err.print(e);
}
}
/**
* 普通查询
*/
@Test
public void testQuery() {
String queryStr = "content:*";
SolrQuery params = new SolrQuery(queryStr);
params.setSort("id",ORDER.asc);
params.set("rows", 10);
try {
QueryResponse response = null;
response = server.query(params);
SolrDocumentList list = response.getResults();
System.out.println("总共 : " + list.getNumFound() + "条记录");
for (SolrDocument doc : list) {
System.out.println("id : " + doc.get("id") + " title : " + doc.get("title")+
" content : "+ doc.get("content"));
}
} catch (Exception e) {
System.err.print(e);
}
}
/*
* 高亮查询
*/
@Test
public void hightLightQuery() throws Exception{
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("title:新闻");
//solrQuery.setFilterQueries("content:[0 TO 100]");
//solrQuery.setSort("content",ORDER.asc);
// 开启高亮
solrQuery.setHighlight(true).setHighlightSnippets(1); ;
// 设置高亮域
solrQuery.addHighlightField("title");
// 设置高亮前缀
solrQuery.setHighlightSimplePre("<font color='red'>");
// 设置高亮后缀
solrQuery.setHighlightSimplePost("</font>");
QueryResponse queryResponse = server.query(solrQuery);
// 从查询响应中获取结果集
SolrDocumentList solrDocumentList = queryResponse.getResults();
// 打印结果集中的数据
for (SolrDocument solrDocument : solrDocumentList) {
// 获取查询结果
System.out.println( solrDocument.get("content"));
// 获取高亮结果
Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
//获取多层嵌套的结果
List<String> lists = map.get(solrDocument.get("id")).get("title");
if(lists != null)
System.out.println(lists.get(0));
}
}
/*
* 删除
*/
@Test
public void deletDoc() throws Exception{
server.deleteByQuery("id:4");
//一定要提交
server.commit();
}
}
java代码操作solr搜索引擎的增删查改的更多相关文章
- java实现简单的数据库的增删查改,并布局交互界面
一.系统简介 1.1.简介 本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...
- 分享知识-快乐自己:java代码 操作 solr
POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...
- go语言操作mysql范例(增删查改)
http://blog.csdn.net/jesseyoung/article/details/40398321 go语言连接mysql简介 go官方仅提供了database package,d ...
- Moogoose操作之Schema实现增删查改
Schema不仅定义了文档结构和使用性能,可以为后面的Model和Entity提供公共的属性和方法. Schema.Model.Entity的关系: Schema : 可以定义字段类型,不具备数据库的 ...
- SSH2 增删查改实例
(一)引入包 (共73个,不一定都需要,但是我的项目是这么多,经过调试,没有包冲突) (二)创建数据库表 建立数据库octtest,并创建user表,表里面一共4个字段:id,姓,名,年龄. 语句如下 ...
- Java连接MySQL数据库及简单的增删查改操作
主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...
- SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...
- SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...
- java中CRUD(增删查改)底层代码的实现
java中CRUD(增删查改)底层代码的实现: package com.station.dao; import com.station.model.Product; import java.sql.* ...
随机推荐
- IOS-企业开发人员账号&邓白氏码申请记录
Apple开发人员账号分三种,个人.公司,还有企业.个人和公司都称为标准账号. 另一种是教育机构的账号. 账号介绍 个人和公司的就不说了.如今仅仅说企业账号 首先是申请企业账号的地址: https:/ ...
- 树莓派apache2.4源码包安装
1.安装apr-1.6.3.tar.gz apr-util-1.6.1.tar.bz2 httpd-2.4.34.tar.gz (源码包下载centos7的就行,树莓派版本官方debian) 2.问题 ...
- windows环境下redis启动加到服务中
前置条件: 1.命令运行在redis-server.exe目录下 2.cmd命令 安装命令: redis-server.exe --service-install redis.windows.co ...
- Django 跨域问题
当使用Django 做接口时,被html5 或者app访问时 存在跨域问题 导致无法请求到数据,具体解决办法如下: 跨域问题解决 安装pip install django-cors-headers修改 ...
- Shell常见问题整理
1. 使用shell进行程序设计的原因是什么? 可以快速.简单的完成编程,非常适合于编写一些执行相对简单的任务的小工具.如果有一个简单的构想,可以通过它检查自己的想法是否可行.还可以使用shell对进 ...
- Java | 原来 serialVersionUID 的用处在这里
本文首发于 http://youngzy.com/ 一直不太明白Java对象里 serialVersionUID 字段是做什么用的.有或者没有,它们之间有差别吗?除了Eclipse里提示的那个黄色的警 ...
- mysql按位的索引判断位的值
DELIMITER $$ DROP FUNCTION IF EXISTS `value_of_bit_index`$$/*计算数字的某个位的值*/CREATE FUNCTION `value_of_b ...
- Java正则表达式使用 | 叠加
public class Test { public static void main(String[] args) { String s = "ni\nhao\nma he yi\nyon ...
- Realm 简介
是一个跨平台的本地数据库,比sqlite 数据库更轻量级,执行效率更高. 官网地址:https://realm.io/docs/java/latest/
- Windows 平台下局域网劫持测试工具 – EvilFoca
简介 安全测试工具可能含有攻击性,请谨慎适用于安全教学及学习用途,禁止非法利用! EvilFoca是Windows环境下基于.NET FrameWork的一款轻量级的劫持测试工具.与BackTrack ...