solr开发之基本操作
package zr.com.util; import java.io.IOException;
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.SolrRequest;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.Group;
import org.apache.solr.client.solrj.response.GroupCommand;
import org.apache.solr.client.solrj.response.GroupResponse;
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.apache.solr.common.util.NamedList;
import org.junit.Test; /**
*
* @author LF
*
*/
public class BaseOperation { /**
* 删除索引
* @throws IOException
* @throws SolrServerException
*/
@Test
public void deleteTest() throws SolrServerException, IOException{
// 建立请求
SolrServer server = new HttpSolrServer("http://192.168.10.105:18080");
// 删除
UpdateResponse ur = server.deleteById("448457__ef004ca974cc42b9a7128cb3a2eced3a");
System.out.println(ur);
// 提交
server.commit();
} /**
* 添加索引
* @throws IOException
* @throws SolrServerException
*/
@Test
public void addTest() throws SolrServerException, IOException{
// 建立请求
SolrServer server = new HttpSolrServer("http://192.168.10.105:18080");
// 创建SolrInputDocument对象
SolrInputDocument document = new SolrInputDocument();
// 添加相应的域(字段)
document.addField("id", "15201596724");
document.addField("courseName", "算法导论");
document.addField("schoolName", "计算机技术大学");
server.add(document);
// 提交
server.commit();
} /**
* 更新
* @throws IOException
* @throws SolrServerException
*/
@Test
public void updateTest() throws SolrServerException, IOException{
// 建立请求
SolrServer server = new HttpSolrServer("http://192.168.10.105:18080");
// 创建SolrInputDocument对象
SolrInputDocument document = new SolrInputDocument();
// 添加相应的域(如果id的值不存在,则添加;否则,会先删除原来的数据,再添加)
document.addField("id", "15201596724");
document.addField("courseName", "算法导论之算法之美");
document.addField("schoolName", "计算机技术大学");
document.addField("schoolShortName", "计算机技术软件工程学院");
server.add(document);
// 提交
server.commit();
} /**
* 查询
* @throws SolrServerException
*/
@Test
public void queryTest() throws SolrServerException{
// 建立请求
SolrServer server = new HttpSolrServer("http://192.168.10.105:18080");
// 创建查询对象
SolrQuery query = new SolrQuery();
// 查询语句的处理
// String queryStr = "id:15201596724";
// String queryStr = "courseName:算法导论";
// String queryStr = "courseName:算法导论之算法之美 AND schoolShortName:学院";
String queryStr = "courseName:算法导论之算法之美 OR schoolShortName:学院";
query.setQuery(queryStr); // 分页(起始位置)
query.setStart(10);
// 分页(每一页显示的条数)
query.setRows(5);
// 排序(降序)
query.setSort("courseName", ORDER.desc); //执行查询
QueryResponse response = server.query(query);
// 获取响应后的结果集
SolrDocumentList list = response.getResults();
for (SolrDocument solrDocument : list) {
System.out.println(solrDocument);
}
} /**
* 模糊查询(高亮)
* @throws SolrServerException
*/
@Test
public void dimQueryTest() throws SolrServerException{
// 建立请求
SolrServer server = new HttpSolrServer("http://192.168.10.105:18080");
// 创建查询对象
SolrQuery query = new SolrQuery();
// 查询语句的处理(模糊查询,添加双引号即可)
String queryStr = "courseName:\"算法导论\" "; // 设置高亮显示
// 是否设置高亮
query.setHighlight(true);
// 前缀
query.setHighlightSimplePre("<em>");
// 后缀
query.setHighlightSimplePost("</em>");
// 设置高亮文本的长度
query.setHighlightFragsize(8);
query.setHighlightRequireFieldMatch(true);
// 设置高亮的字段
query.addHighlightField("courseName"); query.setQuery(queryStr); // // 分页(起始位置)
// query.setStart(10);
// // 分页(每一页显示的条数)
// query.setRows(5);
// // 排序(降序)
// query.setSort("courseName", ORDER.desc); //执行查询
QueryResponse response = server.query(query);
// 获取高亮的信息
Map<String, Map<String, List<String>>> map = response.getHighlighting(); System.out.println(map); //执行查询
// QueryResponse response = server.query(query);
// 获取响应后的结果集
SolrDocumentList list = response.getResults();
for (SolrDocument solrDocument : list) {
// 获取ID
String id = solrDocument.getFieldValue("id").toString();
String courseName = solrDocument.getFieldValue("courseName").toString();
String schoolShortName = solrDocument.getFieldValue("schoolShortName").toString();
// 高亮替换
Map<String, List<String>> hlisMap = map.get(id);
if (hlisMap!=null) {
// System.out.println(hlisMap);
Object cName = hlisMap.get("courseName");
if (cName!=null) {
// 替换
courseName = cName.toString();
}
}
System.out.println("id:"+id+",courseName:"+courseName+",schoolShortName:"+schoolShortName);
}
} /**
* 分组查找
* @throws SolrServerException
*/
@Test
public void groupQuery() throws SolrServerException{
// 建立请求
SolrServer server = new HttpSolrServer("http://192.168.10.105:18080");
// 创建查询对象
SolrQuery query = new SolrQuery();
// 设置查询条件
query.setQuery("courseName:园林工程");
// 是否分组
query.setParam("group", true);
// 根据某个域进行分组
query.setParam("group.field", "areaName");
// 进行过滤(在某个区间内)
// query.setParam("group.query", "TimeScore:[0 TO 5]");
// 每组显示的个数
query.setParam("group.limit", "10");
// 是否计算所得分组的个数
query.setParam("group.ngroups", true); // query.setStart(5);
// query.setRows(100);
// 获取响应后的结果集
QueryResponse response = server.query(query);
// 获取分组后的结果集
GroupResponse gResponse = response.getGroupResponse(); List<GroupCommand> commands = gResponse.getValues();
if (commands != null) {
for (GroupCommand groupCommand : commands) {
System.out.println("总分组的个数:"+groupCommand.getNGroups().longValue());;
for (Group group : groupCommand.getValues()) {
SolrDocumentList list = group.getResult();
// System.out.println(list);
for (SolrDocument solrDocument : list) {
String id = solrDocument.get("id").toString();
String courseID = solrDocument.get("courseID").toString();
String schoolName = solrDocument.get("schoolName").toString();
String courseName = solrDocument.get("courseName").toString();
String areaName = solrDocument.get("areaName").toString();
System.out.println("areaName"+areaName+",id:"+id+",courseID:"+courseID+",schoolName:"+schoolName+",courseName"+courseName);
} }
}
}
} }
solr开发之基本操作的更多相关文章
- 在win10环境下搭建 solr 开发环境
在win10环境下搭建 solr 开发环境 2017年05月30日 09:19:32 SegaChen0130 阅读数:1050 在win10环境下搭建 solr 开发环境 安装环境 Windo ...
- Cloudera5.8.3:Flume+Morphline+Solr开发小技巧
1.Flume和Morphline添加日志打印 log4j.logger.org.apache.flume.sink.solr=DEBUG log4j.logger.org.kitesdk.morph ...
- Solr开发参考文档(转)
Solr开发文档 Solr 是一种可供企业使用的.基于 Lucene 的搜索服务器,它支持层面搜索.命中醒目显示和多种输出格式.在这篇文章中,将介绍 Solr 并展示如何轻松地将其表现优异的全文本搜索 ...
- SQL数据开发(经典) 基本操作
数据开发(经典) 1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Str oke_ci_as ...
- solr开发从查询结果集中获取对象数据
solrJ从查询结果集中获取对象数据. 方案一:自定义转换方式 /** * * SolrDocument与实体类转换 [测试通过] * * @author pudongping * * @param ...
- solr开发,提交索引数据的几种方式
今天抽空学习了一下solr,有新东西学习就是哈皮! 期待能有机会与实战.实例仅为个人理解学习实例.提交到Solr服务器上的数据必须是 SolrInputDocument 类型. 方案一:利用反射,自定 ...
- Python Qt的窗体开发的基本操作
本文章采用的是Qt4,是python(x,y) 套件中集成的,为啥不集成Qt5呢,懒得装啊:) 正文: 首先看成品: 这个程序的功能是输入原价和降价的百分比,计算出最后的价格. 设计器部分 然后就是开 ...
- solr开发 小案例
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...
- solr热身
入博客园快满一年,居然没写一篇博客,好惭愧. 公司的搜索系统需要从Lucene.net(更新相当不给力)换成solr了,最近一直在学习solr,相关资料是相当的少啊,特别是还要在.net环境下开发.准 ...
随机推荐
- 【ES6】蛋疼
- 公历和农历转换的JS代码
<!-- function CalConv(M) { FIRSTYEAR = 1936; LASTYEAR = 2031; LunarCal = [ new tagLunarCal(23, 3, ...
- selenium - css 定位
前言: CSS(Cascading Style Sheets)是一种语言,它被用来描述 HTML 和 XML 文档的表现. CSS 使用选择器来为页面元素绑定属性.这些选择器可以被 selenium ...
- Linux 定时任务 crontab 讲解
linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...
- VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
1.首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序 (DLL.EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dl ...
- bootstrap 设置表格固定宽度 内容换行
在项目中开发的时候用的bootstrap,但是有些表格的内容 会显示的很长 那么我第一时间想到的就是 修改td或者th的width,但是我设置了 之后不起作用 于是百度找到了解决方法: 学习源头: h ...
- protobuff java 包编译(Windows)
google probuffer的强大,很多人都知道,但是官方的source 里是没有jar下载,唯有源码下载,故需自己编译得到jar. java 的jar的编译采用maven 编译的,因此需先构建m ...
- java多线程练习实例
总结: 循环的使用率蛮高,Thraed.sleep(),try-catch语句 package com.aa; public class West { public static void main( ...
- Tair ldb(leveldb存储引擎)实现介绍
简介 tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存 ...
- 2012_p2 寻宝 (treasure.cpp/c/pas)
2012_p2 寻宝 (treasure.cpp/c/pas) 时间限制: 1 Sec 内存限制: 128 MB提交: 23 解决: 9[提交][状态][讨论版][命题人:外部导入] 题目描述 2 ...