添加SolrJ的jar包

  solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,

 <dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.10.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>

创建索引

  使用SolrJ创建索引,通过调用SolrJ提供的API请求Solr服务,Document通过SolrInputDocument进行构建。

 // 创建索引
public static void createIndex() throws Exception {
SolrServer solrServer = new HttpSolrServer("http://192.168.50.50:8080/solr/collection1");
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "00001");
document.addField("name", "solr全文检索");
document.addField("price", 86.5f);
document.addField("description", "这是一本关于solr的书籍!");
UpdateResponse response = solrServer.add(document);
solrServer.commit();
}

删除索引

 //删除索引
public void deleteIndex() throws Exception {
SolrServer solrServer = new HttpSolrServer(solrUrl);
//根据id删除
UpdateResponse response = solrServer.deleteById("c0001");
//根据多个id删除
solrServer.deleteById("0001,0002");
//自动查询条件删除
solrServer.deleteByQuery("name:教程");
solrServer.commit();
}

搜索索引

 //查询索引
public static void selectIndex() throws Exception {
SolrServer solr = new HttpSolrServer(solrUrl);
// 查询对象
SolrQuery query = new SolrQuery();
//设置查询条件,名称“q”是固定的且必须的
//搜索keywords域,keywords是复制域包括name和description
query.set("q", "keywords:java教程");
// 设置商品分类、关键字查询
query.setQuery("name:数据 AND price:11.1");
// 设置价格范围
query.set("fq", "price:[1 TO 20]");
// 查询结果按照价格降序排序
//query.set("sort", "price desc");
query.addSort("price", ORDER.desc);
// 请求查询
QueryResponse response = solr.query(query);
// 查询结果
SolrDocumentList docs = response.getResults();
// 查询文档总数
System.out.println("查询文档总数" + docs.getNumFound());
for (SolrDocument doc : docs) {
String id = (String) doc.getFieldValue("id");
String name = (String)doc.getFieldValue("name");
Float price = (Float)doc.getFieldValue("price");
String description = (String)doc.getFieldValue("description");
System.out.println(id);
}
}

高亮搜索索引

 // 分页和高亮
public static void selectHeightLight() throws Exception {
SolrServer solr = new HttpSolrServer(solrUrl);
// 查询对象
SolrQuery query = new SolrQuery();
// text是name、title等众多字段的复制域
query.setQuery("text:算");
// 每页显示记录数
int pageSize = 2;
// 当前页码
int curPage = 1;
// 开始记录下标
int begin = pageSize * (curPage - 1);
// 起始下标
query.setStart(begin);
// 结束下标
query.setRows(pageSize);
// 设置高亮参数
query.setHighlight(true); // 开启高亮组件
query.addHighlightField("name");// 高亮字段
query.setHighlightSimplePre("<span color='red'>");//前缀标记
query.setHighlightSimplePost("</span>");// 后缀标记
// 请求查询
QueryResponse response = solr.query(query);
// 查询结果
SolrDocumentList docs = response.getResults();
// 查询文档总数
System.out.println("查询文档总数" + docs.getNumFound());
for (SolrDocument doc : docs) {
// 商品主键
String id = (String) doc.getFieldValue("id");
// 商品名称
String name = (String)doc.getFieldValue("name");
// 高亮信息
if(response.getHighlighting() != null) {
if(response.getHighlighting().get(id) != null) {
// 取出高亮片段
Map<String, List<String>> map = response.getHighlighting().get(id);
if(map.get("name") != null) {
for(String s : map.get("name")) {
System.out.println(s);
}
}
}
}
}
}

Java操作Solr之SolrJ的更多相关文章

  1. java操作solr

    <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</a ...

  2. java操作solr实现查询功能

    一.封装的查询方法 /** * solr查询方法 * @param client solr客户端 * @param query solr查询对象 * @return list集合 * @throws ...

  3. Solr 14 - SolrJ操作SolrCloud集群 (Solr的Java API)

    目录 1 pom.xml文件的配置 2 SolrJ操作SolrCloud 1 pom.xml文件的配置 项目的pom.xml依赖信息请参照: Solr 09 - SolrJ操作Solr单机服务 (So ...

  4. Solr 09 - SolrJ操作Solr单机服务 (Solr的Java API)

    目录 1 SolrJ是什么 2 SolrJ对索引的CRUD操作 2.1 创建Maven工程(打包方式选择为jar) 2.2 配置pom.xml文件, 加入SolrJ的依赖 2.3 添加和修改索引 2. ...

  5. 使用solrj操作solr索引库

    (solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...

  6. 使用solrj操作solr索引库,solr是lucene服务器

    客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...

  7. 利用SolrJ操作solr API完成index操作

    使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法 ...

  8. 使用solrJ操作solr常用方法 【注释非常详细,非常好】

    转: 使用solrJ操作solr常用方法 2017年08月07日 22:49:06 成都往右 阅读数:8990   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  9. solr的客户端操作:使用solrj进行curd操作

    导入相关的jar包 <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-s ...

随机推荐

  1. 截取字符串后几位用 length

  2. JAVA生成六位随机数

    public static String getSixNum() { String str = "0123456789"; StringBuilder sb = new Strin ...

  3. HTTP请求响应报文 - 相关状态码 - GET_POST请求方法

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...

  4. 一个简单的MapReduce示例(多个MapReduce任务处理)

    一.需求 有一个列表,只有两列:id.pro,记录了id与pro的对应关系,但是在同一个id下,pro有可能是重复的. 现在需要写一个程序,统计一下每个id下有多少个不重复的pro. 为了写一个完整的 ...

  5. Linux-nmon系统性能监控工具的使用及报表产出

    在进行性能测试的时候,需要获取服务器的各项指标,例如 CPU.MEM.I/O.DISK 等.网上有很多的监控工具,nmon 就是其中的一个,其可与 JMeter结合使用,测试系统的性能.其概要的介绍, ...

  6. 文档设计也需要坚持DRY原则--支付中心应用部署结构图完善

    今天上午,我拿着支付中心的设计文档,给入职不久的同事讲解目前支付中心系统的应用部署情况.当时同事嗯嗯地点头反应. 下午呢,发现自己设计的有问题,赶紧给予完善. 代码重构方面讲究DRY编程原则.我们在设 ...

  7. 简易C# socket

    服务器 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Thread ...

  8. Python之words count

    要求: 对文件单词进行统计,不区分大小写,并显示单词重复最多的十个单词 思路: 利用字典key,value的特性存单词及其重复的次数 每行进行特殊字符的处理,分离出被特殊字符包含的单词 def mak ...

  9. <script> 属性crossorigin

    今日偶然见到如下代码: <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper. ...

  10. Sitecore 8.1 - 特性和功能

    营销基础 一个新的Sitecore品牌术语取代了体验营销(以前的Sitecore DMS),这是Sitecore体验数据库(xDB)现在所在的位置. Sitecore 7.5和Sitecore 8.0 ...