全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

solr在java中的使用实例代码

SolrJ是操作Solr的Java客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。

jar包的引用(maven pom.xml):

 <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>5.3.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>

java代码:

package entity;

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;


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 9]");//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();
  }
}

参考文档:http://www.doc88.com/p-6763747939865.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # 使用solr  # java中使用solr  # solr  # 实例  # java操作solr实现查询功能的实例  # 详解java整合solr5.0之solrj的使用  # java多线程处理执行solr创建索引示例  # maven项目下solr和spring的整合配置详解  # Ubuntu16.04安装部署solr7的图文详细教程  # linux下安装solr的教程详解  # SpringBoot整合Redis、ApachSolr和SpringSession的示例  # 启动Solr提示Java版本低问题解决方案  # 文档  # 查询结果  # 服务端  # 客户端  # 都是  # 将会  # 两种  # 遍历  # 适用于  # 有过  # 布尔  # 分页  # 可以使用  # 三个字  # 来完成  # 两字  # 大家多多  # 进行了  # 就可以  # 使用了 


相关文章: 如何通过FTP空间快速搭建安全高效网站?  制作网页的网站有哪些,电脑上怎么做网页?  如何在IIS管理器中快速创建并配置网站?  建站主机如何选?高性价比方案全解析  孙琪峥织梦建站教程如何优化数据库安全?  香港服务器部署网站为何提示未备案?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  小型网站建站如何选择虚拟主机?  建站之星如何实现五合一智能建站与营销推广?  建站之星代理如何优化在线客服效率?  定制建站是什么?如何实现个性化需求?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  如何通过VPS搭建网站快速盈利?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  建站之星导航配置指南:自助建站与SEO优化全解析  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何构建满足综合性能需求的优质建站方案?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  建站之星官网登录失败?如何快速解决?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  高性价比服务器租赁——企业级配置与24小时运维服务  如何使用Golang安装API文档生成工具_快速生成接口文档  如何用美橙互联一键搭建多站合一网站?  如何配置IIS站点权限与局域网访问?  模具网站制作流程,如何找模具客户?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  建站主机选购指南:核心配置与性价比推荐解析  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何高效配置IIS服务器搭建网站?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站主机是否等同于虚拟主机?  建站之星价格显示格式升级,你的预算足够吗?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在建站之星绑定自定义域名?  制作销售网站教学视频,销售网站有哪些?  学校建站服务器如何选型才能满足性能需求?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  高端网站建设与定制开发一站式解决方案 中企动力  安云自助建站系统如何快速提升SEO排名?  ,sp开头的版面叫什么?  建站之星代理商如何保障技术支持与售后服务?  动图在线制作网站有哪些,滑动动图图集怎么做?  如何制作网站标识牌,动态网站如何制作(教程)? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。