热门标签 | 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



推荐阅读
  • 本文介绍如何使用 Google 开发的 libphonenumber 库在 Java 应用中实现电话号码的有效性验证。该库不仅支持多种国际电话号码的格式化与解析,还提供了一系列强大的验证工具。 ... [详细]
  • 本文深入探讨了如何在Gradle构建系统中定义和使用自定义任务,包括基本任务的定义、任务的分组与描述设置,以及如何创建可复用的任务类型。 ... [详细]
  • 本文详细分析了一个生产系统中遇到的 Apache Axis2 403 Forbidden 错误,并提供了具体的排查步骤和解决方案。 ... [详细]
  • 本文介绍了如何通过修改Android应用的配置文件和编写布局与Activity代码,利用DOM模式将用户输入的数据保存为XML文件。 ... [详细]
  • 本文介绍了如何使用Orika作为Java Bean属性复制工具,通过示例展示了其基本用法和高级特性,包括不同字段名的映射和类型转换。 ... [详细]
  • 使用URLHttpConnection获取并展示图片至ImageView的方法
    本文介绍如何通过URLHttpConnection方式从网络加载图片,并将其显示在Android应用的ImageView组件上。包括布局文件和Java代码的具体实现。 ... [详细]
  • 如何在UIWebView中加载本地图片
    本文详细介绍了如何在UIWebView中加载本地图片的方法,这对于需要在应用内展示静态页面和富文本内容的场景非常有用。 ... [详细]
  • 开发笔记:三分钟快速搭建分布式高可用的Redis集群
    开发笔记:三分钟快速搭建分布式高可用的Redis集群 ... [详细]
  • 本文详细记录了在Ubuntu 9.10操作系统上从零开始搭建LAMP(Linux, Apache, MySQL, PHP)环境的过程,包括遇到的问题及解决方案。旨在为初次尝试搭建LAMP环境的开发者提供参考。 ... [详细]
  • 本文详细介绍了 Android 开发中显式 Intent 和隐式 Intent 的区别及应用场景,包括如何通过显式 Intent 在同一应用内切换 Activity,以及如何利用隐式 Intent 实现跨应用的功能调用。 ... [详细]
  • Spring Boot中的API可视化工具介绍
    本文将介绍如何使用Spring Boot集成Swagger来创建和展示API文档。通过访问http://localhost:8080/swagger-ui.html,用户可以直接查看到应用的API文档界面,这一功能极大地简化了API文档的编写和维护。 ... [详细]
  • Pikachu平台SQL注入漏洞详解
    本文详细介绍了SQL注入漏洞的基本原理、攻击流程、不同类型注入点的识别与利用方法,以及基于union联合查询、报错信息、布尔盲注、时间盲注等多种技术手段的信息获取方式。同时,探讨了如何通过SQL注入获取操作系统权限,以及HTTP Header注入和宽字节注入等高级技巧。最后,提供了使用SQLMap自动化工具进行漏洞测试的方法和常见的SQL注入防御措施。 ... [详细]
  • 本文介绍如何创建一个简单的Android桌面小部件,通过显示两个文本框来展示基本功能。提供代码下载链接及详细步骤。 ... [详细]
  • 初学者必备:iBATIS入门指南与常见问题解决
    本文旨在为iBATIS初学者提供一份详细的入门指南,并针对官方文档中示例不足的问题提出解决方案。适合零基础学习者。 ... [详细]
  • JobScheduler5.0源码分析
    0.JobScheduler执行代码mJobScheduler(JobScheduler)getSystemService(Context.JOB_SCHEDULER_SERVICE); ... [详细]
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社区 版权所有