热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SolrJ的初步使用

为什么80%的码农都做不了架构师?solrj是solrjava应用api,能够快速搭建高效、简单的solr客户端(solr文档内容&

为什么80%的码农都做不了架构师?>>>   hot3.png

solrj是solr java应用api,能够快速搭建高效、简单的solr客户端(solr文档内容)。

正如文档里说的,solrj的搭建可以说是非常的方便,api也非常简单易懂,下面以maven项目搭建solr客户端为例:

        打开pom.xml添加solrj依赖


org.apache.solrsolr-solrj6.1.0

        下面就可以编写solr客户端代码了,主要对象是SolrClient,SolrClient对象包含了增、删、查等api,SolrClient的初始化方法如下

/** solr 服务地址 */
private static String SOLR_URL = "http://{SolrHost}:{Port}/solr/{CoreName}";static {solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
}

         添加文档,solr添加索引的api常用的分为两种,一种是调用add方法传入SolrInputDocument对象,SolrInputDocument对象负责描述文档内容,代码如下

/*** 添加索引* @param ds* @throws IOException* @throws SolrServerException*/public static void addDocument(DataSourcePO ds) throws IOException, SolrServerException {SolrInputDocument document = new SolrInputDocument();document.addField("title", ds.getTitle());document.addField("content", ds.getContent());solrClient.add(document);solrClient.commit();}

          solr支持antation形式添加文档,通过注解@Field指定java属性对应的solr字段,调用SolrClient的addBean方法添加

package atyy.model;import org.apache.solr.client.solrj.beans.Field;import java.util.*;/*** 源数据表* Create by Automatically generated
*/
public class DataSourcePO {/** id */@Field("id")private String id;/** 任务id */@Field("taskId")private String idTask;/** 标题 */@Field("title")private String title;/** 内容 */@Field("content")private String content;/** 抓取链接 */private String url;/** 创建时间 */@Field("create_time")private Date createTime;public DataSourcePO(){}/*** 源数据表 getter*/public String getId() {return id;}/*** 源数据表 setter*/public void setId(String id) {this.id = id;}/*** 源数据表 getter*/public String getIdTask() {return idTask;}/*** 源数据表 setter*/public void setIdTask(String idTask) {this.idTask = idTask;}/*** 源数据表 getter*/public String getTitle() {return title;}/*** 源数据表 setter*/public void setTitle(String title) {this.title = title;}/*** 源数据表 getter*/public String getContent() {return content;}/*** 源数据表 setter*/public void setContent(String content) {this.content = content;}/*** 源数据表 getter*/public String getUrl() {return url;}/*** 源数据表 setter*/public void setUrl(String url) {this.url = url;}/*** 源数据表 getter*/public Date getCreateTime() {return createTime;}/*** 源数据表 setter*/public void setCreateTime(Date createTime) {this.createTime = createTime;}
}

/*** 添加索引* @param ds* @throws IOException* @throws SolrServerException*/public static void addDocument(DataSourcePO ds) throws IOException, SolrServerException {solrClient.addBean(ds);solrClient.commit();}

         solr删除文档通常是通过文档主键来删除,主键是Schema中配置的uniqueKey标签指定,默认情况是id

/*** 删除索引* @param id* @throws IOException* @throws SolrServerException*/public static void deleteDocument(String id) throws IOException, SolrServerException {solrClient.deleteById(id);}

         Solrj查询通过SolrQuery对象来设置查询参数,从4.0版本以后可以选择RequestHandler,RequestHandler可以理解为查询配置,可以配置高亮和查询权重算法,当然,高亮也可以用SolrQuery api来设置,我自己的代码太过简单,这里用文档中的代码加上注释

SolrQuery query = new SolrQuery(); //初始化SolrQuery对象
query.set("fl", "category,title,price"); //设置要查询的字段,用逗号分开
//query.setFields("category", "title", "price"); //设置要查询的字段
query.set("q", "category:books"); //设置查询参数QueryResponse response = solrClient.query(query); //执行查询,返回responseSolrDocumentList list = response.getResults(); //获得结果集

         solr里没有modify的概念,原因我是这样理解的,solr作为一个搜索引擎,本质上是提供简历索引和遍历索引的服务,跟数据库是有区别的,所以想要在solr里面修改文档,那就删除重新创建吧


转:https://my.oschina.net/muziH/blog/717837



推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 设计模式——模板方法模式的应用和优缺点
    本文介绍了设计模式中的模板方法模式,包括其定义、应用、优点、缺点和使用场景。模板方法模式是一种基于继承的代码复用技术,通过将复杂流程的实现步骤封装在基本方法中,并在抽象父类中定义模板方法的执行次序,子类可以覆盖某些步骤,实现相同的算法框架的不同功能。该模式在软件开发中具有广泛的应用价值。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
zjjj-jz政
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有