solr5的基本操作
为什么80%的码农都做不了架构师?>>>
Solr5操作
界面操作
Document操作索引
Query查询索引
Java操作
创建maven项目,在maven项目中导入依赖
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.10.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
/**
* 使用document来插入index
* @throws SolrServerException
* @throws IOException
*/
@Test
public void addIndexBydocuments() throws SolrServerException, IOException{
HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:8983/solr/core_one");
//使用document来操作solr
SolrInputDocument solrInputDocument = new SolrInputDocument();
//设置记录的每个必须属性,非必须的属性按需设置
solrInputDocument.addField("id", "3");
solrInputDocument.addField("title", "华为手机低价处理");
solrInputDocument.addField("price", 1255);
solrInputDocument.addField("name", "华为手机");
server.add(solrInputDocument); //使用document添加记录
server.commit(); //提交操作
}
使用bean类直接操作index
public class Item {
@Field
private String id;
@Field
private String name;
@Field
private String title;
@Field
private long price;
}
注:在shema中存在的field必须加上@Field注解,否则会报错
/**
* 使用bean对象添加index
* @throws Exception
*/
@Test
public void addIndexByBean() throws Exception{
HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:8983/solr/wxdlCore");
//封装bean对象
Item item = new Item();
item.setId("6");
item.setName("小米手机");
item.setPrice(999l);
item.setTitle("小米手机热销中");
//根据bean添加索引
server.addBean(item);
server.commit();
}
/**
* 根据id删除index
* @throws Exception
*/
@Test
public void delIndexById() throws Exception{
HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:8983/solr/wxdlCore");
server.deleteById("change.me");
server.commit();
}
/**
* 根据表达式查询结果删除
* @throws Exception
*/
@Test
public void delIndexByExpression() throws Exception{
HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:8983/solr/wxdlCore");
server.deleteByQuery("title:小米*");
server.commit();
}
deleteByQuery(query) 此处的query是一个solrQuery,对应query界面中的q :
/**
* 对index的修改就是对已存在的index进行添加操作,主键不修改
* @throws SolrServerException
* @throws IOException
*/
@Test
public void updateIndex() throws IOException, SolrServerException{
Item item = new Item();
item.setId("6");
item.setTitle("小米2 火热来袭 低价热销");
item.setName("小米2");
server.addBean(item);
server.commit();
}
/**
* 使用document获取查询结果
* @throws Exception
*/
@Test
public void getIndexByDocument() throws Exception{
SolrQuery solrQuery = new SolrQuery("title:*");
QueryResponse query = server.query(solrQuery);
SolrDocumentList results = query.getResults();
for (SolrDocument solrDocument : results) {
System.out.println(solrDocument.getFieldValue("name")+"....."+solrDocument.getFieldValue("title"));
}
}
/**
* 使用bean来直接获取结果
* @throws Exception
*/
@Test
public void selectIndexs() throws Exception{
SolrQuery query = new SolrQuery("title:*");
query.setRows(10);
query.setFields("name" , "title");
QueryResponse query2 = server.query(query);
List<Item> beans = query2.getBeans(Item.class);
for (Item item : beans) {
System.out.println(item.getName()+"......."+item.getTitle());
}
}
怎么样同时查title和content ?
a)采用 <copyField> ,将title和content设置到text的field中
b)根据服务器 solrconfig.xml 配置 df 默认查询字段进行查询
<requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="df">text</str> </lst> </requestHandler> |
注:不推荐用name来设置进copyfield中,查询的结果会空
/**
* 高亮显示
* @throws Exception
*/
@Test
public void getHightlighter() throws Exception{
SolrQuery query = new SolrQuery("title:手机");
//设置高亮相关配置
query.setHighlight(true); //开启高亮
query.addHighlightField("title"); //设置需要高亮的字段,可设置多个
query.addHighlightField("content"); //设置需要高亮的字段,可设置多个
query.addHighlightField("name"); //设置需要高亮的字段,可设置多个
query.setHighlightFragsize(100); //设置摘要的长度
query.setHighlightSimplePre("<font color='red'>"); //设置高亮前缀
query.setHighlightSimplePost("</font>"); //设置高亮后缀
//------------
QueryResponse response = server.query(query); //查询结果
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); //高亮内容集合
System.out.println(highlighting);
Set<String> keySet = highlighting.keySet(); //获取的是主键的set集合
//遍历获取所有的高亮内容
for (String string : keySet) {
Map<String, List<String>> map = highlighting.get(string);
Set<String> fieldKeys = map.keySet();
for (String string2 : fieldKeys) {
List<String> list = map.get(string2);
for (String string3 : list) {
System.out.println(string3);
}
}
}
}
结果:
{3={name=[华为<font color='red'>手机</font>], title=[华为<font color='red'>手机</font>低价处理], content=[华为<font color='red'>手机</font>是中国知名品牌的<font color='red'>手机</font>产品]}, 6={name=[小米<font color='red'>手机</font>], title=[小米<font color='red'>手机</font>热销中], content=[小米<font color='red'>手机</font>是<font color='red'>手机</font>界的新起之秀]}}
华为<font color='red'>手机</font>
华为<font color='red'>手机</font>低价处理
华为<font color='red'>手机</font>是中国知名品牌的<font color='red'>手机</font>产品
小米<font color='red'>手机</font>
小米<font color='red'>手机</font>热销中
小米<font color='red'>手机</font>是<font color='red'>手机</font>界的新起之秀
转载于:https://my.oschina.net/wxdl/blog/698922
solr5的基本操作相关推荐
- 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作: 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...
- pytorch方法,Tensor及其基本操作_重点
由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...
- Gradle安装使用以及基本操作
转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...
- c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...
各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...
- 【Pandas库】(3) DataFrame的创建方法及基本操作
各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...
- 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句
一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...
- MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...
- OpenCV-Java版学习(3.对视频的基本操作)
前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...
- JDBC编程:2(数据库的基本操作)
数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情.在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结 ...
最新文章
- 自己实现文本相似度算法(余弦定理)
- 哪些模块可用于python性能分析_Python调用C模块以及性能分析
- python扫描端口脚本_Python端口扫描简单程序
- python3.0内建函数大全_python3内置函数大全
- 2021-01-07 Halcon初学者知识【8】 将图像部分内容截取并保存
- SharePoint 2013 术语和术语集介绍
- 大端小端区别、Union和Struct的内存分配
- python可以做二维码吗_Python制作二维码,并且可以添加logo
- 高等数学上-赵立军-北京大学出版社-题解-练习3.4
- 【需求工程】需求工程
- spring-boot两小时入门笔记
- java代码鸡兔同笼_鸡兔同笼 java代码
- 机房服务器存放位置要求,服务器机房建设设计要求规范.doc
- 五金模具设计统赢外挂提升效率技巧、外挂模具设计流程的问题归纳
- ubuntu下配置msmtp+mutt发送邮件
- Docker 核心技术与实现原理
- 从DataSet 导出到Excel(是DataSet中的每个DataTable对应每个Sheet)
- 4. 模板 STL容器
- java中基本数据类型和引用数据类型各有什么特点
- vue 使用window的对象_如何3分钟把VUE项目打包成apk
热门文章
- 生成删除约束语句 SQL语句
- mysql5.7版本源_用最新MySQL 8.0的源安裝MySQL 5.7版本(CentOS 7環境下)
- centos 配置bond_CentOS 网卡配置bond4(LACP)
- 计算机的图形用户界面,2017计算机等级考试知识点:认识图形用户界面
- 全国大学生智能车竞赛赛场准备好,就等同学们入驻展示
- 在MM32F3273上运行MicroPython,对于性能进行测试
- 基于ESP8266WiFi步进电机控制
- 为什么使用RLC表测量电感在不同的频率测量值不同呢?
- apache2配置和使用
- 新手焊接电路板_【实验】新手焊接电路板的不完全指南