Solr的增删改查实现

Solr+java实现索引库增删改查 1 了解solr的配置文件 1.1 solr的核心配置文件:solrConfig.xml solrconfig.xml 配置文件主要定义了 solr 的一些处理规则,包括索引数据的存放 位置,更新,删除,查询的一些规则配置。​ 一般此文件不需要进行修改, 采取默认即可。 (1) field标签 主要是用来指定字段名称的, Lucene中是有用户在程序中指定, solr中需要提前在配置文件中指定 &... 阅读详情
//省略的包名

import org.apache.solr.client.solrj.SolrQuery;
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;
import org.junit.Test;

/**
 * @author Mr.Li
 * @version 1.0
 * @Description: Solr测试
 * @Modified By:
 * @date 2018/12/3 19:41
 */
public class TestSolrj {

    /**
     * 向索引库增加文档
     * @throws Exception
     */
    @Test
    public void addDocument() throws Exception{

        //创建一个SolrServer对象,创建一个连接。参数solr服务的url
        final String solrUrl="http://localhost:8080/solr/index.html#/new_core";
        HttpSolrClient client = new HttpSolrClient.Builder(solrUrl)
                //所有的SolrClient实现允许用户指定的的连接和读取超时与Solr的沟通,这些是提供在创建用户时
                .withConnectionTimeout(10000)
                .withSocketTimeout(60000)
                .build();
        //创建一个文档对象SolrInputDocument
        SolrInputDocument input = new SolrInputDocument();
        //向文档对象中添加域。文档中必须包含一个id域,所有的域的名称必须在managed-schema中定义
        input.addField("id", "doc01");
        input.addField("item_title", "测试商品01");
        input.addField("item_price", 1000);
        System.out.println("添加完成");
        //把文档写入索引库
        client.add(input);
        //提交
        client.commit();
        //关闭连接
        client.close();
    }

    /**
     * 根据id和query查询语法删除文档
     * @throws Exception
     */
    @Test
    public void deleteDocument(String id) throws Exception{

        //创建一个SolrServer对象,创建一个连接。参数solr服务的url
        final String solrUrl="http://localhost:8080/solr/index.html#/new_core";
        HttpSolrClient client = new HttpSolrClient.Builder(solrUrl)
                .withConnectionTimeout(10000)
                .withSocketTimeout(60000)
                .build();
        //删除文档
        client.deleteById(id);
        //根据query查询删除
        client.deleteByQuery("id:doc01");
        //提交
        client.commit();
    }

    /**
     * Solr的简单查询
     * @throws Exception
     */
    @Test
    public void findDocument() throws Exception{

        //创建一个SolrServer对象,创建一个连接。参数solr服务的url
        final String solrUrl="http://localhost:8080/solr/index.html#/new_core";
        HttpSolrClient client = new HttpSolrClient.Builder(solrUrl)
                .withConnectionTimeout(10000)
                .withSocketTimeout(60000)
                .build();
        //创建一个SolrQuery对象
        SolrQuery solrQuery=new SolrQuery();
        //设置查询条件
        //solrQuery.setQuery("*:*");
        solrQuery.set("q","*:*");
        //执行查询
        QueryResponse queryResponse=client.query(solrQuery);
        //取查询结果。取查询结果的总记录数
        SolrDocumentList solrDocumentList=queryResponse.getResults();
        System.out.println("查询结果总记录数:"+solrDocumentList.getNumFound());
        //遍历查询结果,从文档中取域的内容
        for (SolrDocument solrDocument:solrDocumentList){
            System.out.println(solrDocument.get("id"));
            System.out.println(solrDocument.get("item_title"));
            System.out.println(solrDocument.get("item_sell_point"));
            System.out.println(solrDocument.get("item_price"));
            System.out.println(solrDocument.get("item_image"));
            System.out.println(solrDocument.get("item_category_name"));
        }
    }

    /**
     * Solr的复杂查询
     * @throws Exception
     */
    public void queryIndexFuza() throws Exception{

        //创建一个SolrServer对象,创建一个连接。参数solr服务的url
        final String solrUrl="http://localhost:8080/solr/index.html#/new_core";
        HttpSolrClient client = new HttpSolrClient.Builder(solrUrl)
                .withConnectionTimeout(10000)
                .withSocketTimeout(60000)
                .build();
        //创建一个SolrQuery对象
        SolrQuery solrQuery=new SolrQuery();
        //查询条件
        solrQuery.setQuery("手机");
        //分页条件,起始和结尾
        solrQuery.setStart(0);
        solrQuery.setRows(20);
        //设置默认搜索域,如果不设置,默认为text域
        solrQuery.set("df", "item_title");
        //开启高亮
        solrQuery.setHighlight(true);
        //高亮显示的域
        solrQuery.addHighlightField("item_title");
        //高亮显示的前缀
        solrQuery.setHighlightSimplePre("<em>");
        //高亮显示的后缀
        solrQuery.setHighlightSimplePost("</em>");
        //执行查询
        QueryResponse queryResponse=client.query(solrQuery);
        //取文档列表。取查询结果的总记录数
        SolrDocumentList solrDocumentList = queryResponse.getResults();
        System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());
        //遍历文档列表,从文档中取域的内容
        Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
        for (SolrDocument solrDocument : solrDocumentList) {
            System.out.println(solrDocument.get("id"));
            //取高亮显示
            List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
            String title = "";
            if (list !=null && list.size() > 0 ) {
                //包含了关键字的话,那么就把带有关键字的这个list赋给title变量
                title = list.get( 0);
            } else {
                //如果没有那么从原来的文档中取标题,只不过没有包含我们需要的关键字
                title = (String) solrDocument.get("item_title");
            }
            System.out.println(title);
            System.out.println(solrDocument.get("item_sell_point"));
            System.out.println(solrDocument.get("item_price"));
            System.out.println(solrDocument.get("item_image"));
            System.out.println(solrDocument.get("item_category_name"));
        }
    }
}

 

SolrClient:Solr客户端 Composer的Solr php客户端 使用 CURL 访问 Solr API #lib Client.php 这是我的工作本写的 立即下载

相关推荐

语音AI Agent落地实战:从ASR-NLP-TTS到多通道协同决策

语音AI Agent并非简单的自动语音识别(ASR)、自然语言处理(NLP)和文本转语音(TTS)三模块串联,而是在真实场景中需兼顾实时性、鲁棒性与隐私合规的端到端交互系统。其核心原理在于打破‘文本中间态’依赖,通过声学-文本-上下文多通道协同决策,融合原始音频特征、N-best置信度与设备环境信号,实现动态意图推演。技术价值体现在低延迟(如120ms离线唤醒)、高抗噪(-5dB SNR下WER≤25%)及强可控性(断网降级、本地热更新)。典型应用场景覆盖车载语音、智能家居与银行网点等边缘受限环境,尤其适用

weixin_29065959的博客 326

Solr7正确的调用SolrClient姿势

好多文章习惯这么调用SolrClient: final String solrUrl = &quot;http://localhost:8983/solr/solr_core&quot;; HttpSolrClient client = new HttpSolrClient.Builder(solrUrl) .withConnectionTimeout(10000) .withSock...

chenyl 7206

如何使用AKShare作为OpenBB的数据源

`openbb_akshare`项目是 OpenBB 的数据源扩展。可以用于查询A股和港股数据

FinAnalyzer金融分析工具 3195

08、全文检索 -- Solr -- 使用 SolrClient 连接 Solr(演示手动配置自定义的SolrClient 并在测试类使用 solrClient 进行添加、查询、删除文档的操作)

使用 SolrClient 连接 Solr(演示手动配置自定义的SolrClient 并在测试类使用 solrClient 进行添加、查询、删除文档的操作)

Java 领域技术分享 1756

python模拟银行交易流水

模拟自动生成银行交易流水,其中包括:入账账号、出账账号、交易金额、交易余额、交易时间、出入表示关键字段

qq_31823889的博客 2910

Ubuntu 22.04 “软件与更新”装了NVIDIA驱动,WiFi等设备不见了

在Win10装了Ubuntu22.04的双系统,台式机里面有NVIDIA 3080Ti的独立显卡,Ubuntu默认使用的nouveau驱动,需要更换成NVIDIA相应的驱动,在软件和更新里面一键安装了NVIDIA-driver-535-server之后,发现wifi、蓝牙等设备消失了。这个问题的根源据说跟这个nouveau驱动有关,希望linux社区可以解决这个问题。命令安装后 sudo reboot就可以重新看到WiFi以及蓝牙等设备图标了。然后用U盘拷贝到不能上网的Ubuntu22.04系统上,利用。

me_ysd的博客 5853

【solr基础教程之九】client

一、Java Script 1、因为Solr本身能够返回Json格式的结果,而JavaScript对于处理Json数据具有天然的优势,因此使用JavaScript实现Solrclient是一个非常好的选择。 2、在之前,主要使用SolJS作为solr的client,眼下主要使用ajax-solr,信息请见:https://github.com/evolvingweb/ajax-...

weixin_34015336的博客 212

PyTorch生成式人工智能(1)——神经网络与模型训练过程详解

在本节中,我们介绍了传统机器学习与人工神经网络间的差异,并了解了如何在实现前向传播之前连接网络的各个层,以计算与网络当前权重对应的损失值;实现了反向传播以优化权重达到最小化损失值的目标。并实现了网络的所有关键组成——前向传播、激活函数、损失函数、链式法则和梯度下降,从零开始构建并训练了一个简单的神经网络。

盼小辉丶的博客 1万+

solr实操(3)

solr实操(3)

weixin_44383484的博客 710

Simulink开发项1000例实战专栏--实例161:基于Simulink实现电动汽车电机驱动系统的建模与仿真

通过上述步骤,我们成功实现了基于Simulink的电动汽车电机驱动系统的建模与仿真。该系统能够全面评估电机驱动系统的性能,验证控制策略的有效性,并通过优化设计提高车辆的动力性和效率。引入智能预测:结合人工智能技术,实现更智能的控制策略。扩展功能:增加对多种电机类型的支持,提升系统通用性。实验验证:将仿真模型应用于实际硬件,进行实验验证,评估其在实际工况下的表现。

xiaoheshang_123的博客 189

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

SolrClient或SolrTemplate写入时连接solr服务器超时问题的一种解决方案

问题: 系统环境十分复杂。当有大量的任务在执行的时候,SolrClient或SolrTemplate的commit方法可能会因超时而失败。如: UpdateResponse updateResponse = solrClient.add("solrCore", solrDocCollection); UpdateResponse ur = solrClient.commit(userConfig.getCompanyCore());//执行这步操作的时候可能会超时报错 解决方法之...

u012632105的博客 1106

2025年微信小程序获取手机号授权登录注册详细教程(含服务端)。不弹窗原因以及减少组件用量的方法

前端把获取到的code传给后端,后端获取access_token和前端传过来的code,请求服务器接口,即可获取到手机号。

coderYYY的博客 3万+

springboot整合solr实现增删改查

在上篇文章中我已经讲了solr的安装与配置、DIH全量导入、ik分词器的配置,今天给小伙伴们分享一下springboot如何整合solr实现增删改查。先赞后看,已成习惯,点赞!!! 目录 一、导包 二、配置solrHost 三、实体类映射 四、增删改 五、solr查询 六、实际应用 一、导包 日常导包,不必多言 <!-- solr-->...

莫离瑜的博客 2093

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Solr的初步认知,以及控制台实现增删改查

Solr的初步认知,以及控制台实现增删改查一、认识Solr简介特点Lucene了解搜索引擎下载并启动Solr二、配置Solr配置jar文件配置数据三级目录欢迎使用Markdown编辑器 一、认识Solr 简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G SolrJ操作提出查找请求(也可以提交json格式),并得到XML格式的返回结果. 特点 Solr是一个高

DemoOne1的博客 321

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

solr 插入数据后变数组_Solr 控制台实现数据的增删改查

Solr 控制台实现数据的增删改查简单记录一下 solr 控制台的 CURD 的使用姿势I. CURD在 solr 提供的控制台上,提供了完整的 CURD 的支持;然而在实际使用的时候,却不一定能很顺手,特此记录一下我们测试的 shema 定义如下id: string # 默认的全局唯一字段content_id: long # 文章idtitle: string # 文章标题content: st...

weixin_39939661的博客 187

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Solr 控制台实现数据的增删改查!

Solr 控制台实现数据的增删改查! 一、存数据(可以查看博客试着将数据库数据放到solr里) 编辑managed-schema文件,在末尾新增相关的field <field name="city_name" type="text_ik" indexed="true" stored="true"/> <field name="city_pid" type="text_ik" indexed="true" stored="true"/> <field name="city_s

weixin_46945684的博客 1103

[增删改查] SpringBoot 整合 Solr 之 SolrClient 实现 CRUD、分页接口、高亮显示

一、前言 任何后端数据库,如 MySQL、Oracle、Redis、Solr、Elasticsearch、MongoDB,SpringBoot 中,先经过 SpringData 的封装,都是无比优雅简洁的。 参考文献 1、《SpringBoot 2 精髓》 李家智 著 2、Solr6 快速入门教程 3、Docker+Solr+IK 4、solr(四) : spri...

IT小村 1万+

solr(五):solrj实现对索引的增删改查

一、环境 1.IDEA 2.JDK1.8 3.CDH5.7.0 二、构建开发环境 1.创建Maven工程,引入solr相关包 <!--solr--> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId&...

小蚯蚓的博客 417

Solr 控制台实现数据的增删改查

Solr 控制台实现数据的增删改查 简单记录一下 solr 控制台的 CURD 的使用姿势 I. CURD 在 solr 提供的控制台上,提供了完整的 CURD 的支持;然而在实际使用的时候,却不一定能很顺手,特此记录一下 我们测试的 shema 定义如下 id: string # 默认的全局唯一字段 content_id: long # 文章id title: string # 文章标题 ...

小灰灰blog的专栏 956

java增删改查封装实现_Java实现对Solr的增删改查以及如何封装一个Query对象

今天写了个JAVA工程来对以及部署在tomcat上的Solr项目进行增删改查操作。首先先获取到HttpSolrServerHttpSolrServer httpSolrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");传进去的参数就是Solr的访问地址。向solr服务器添加一个文档public void ad...

weixin_32768455的博客 158

java实现对solr索引库进行增删改查

一、引言 18年已到九月中旬,珍惜时间等于珍惜生命呐,时光流失,只怕再见来不及挥手。同样是一天上班的时间,有些小伙伴感觉一天很充实,也有些小伙伴感觉一天很无聊的过去了。同样是工作,取决你看待工作的态度,从而产生不同的效果。小编有时候早上到公司,会把今天所需要完成的计划规划好,然后按照规划去完成,如果有突发事件,也要学会合理安排时间。这样你的一天才是充实的,如果感觉无所事事,有事干的时候就干一下,...

贱男 2614

solr实现简单的增删改查

        solr是一款非常强大的搜索项目,虽然基于luncen开发,但是在其基础上做了一定的修改,特别是强大的solr cloud,我是刚开始接触solr,记录下使用solr实现最简单的增删改查。          首先需要搭建solr的开发环境,网上搭建solr开发环境的资料很多,大家可以去找一下,搭建过程也很简单,这里默认大家环境是完好的,没好的话可以参考我的另外一篇博客。  ...

duyunduzai的专栏 676

spring boot 整合solr 5.5 实现增删改查(附带solr安装、启动、配置文件、IK分词器)

java 整合solr 5.5 实现增删改查(附带solr安装、启动、修改配置文件步骤) solr安装 去官网直接下载即可 解压后是一个这样的目录结构 第一步: 创建索引库 点进server/solr文件夹中添加new_core文件夹 点进server\solr\configsets\sample_techproducts_configs 文件夹下conf目录放到new_core中 点进bin目录进行cmd,运行solr start,-p带指定端口启动 stop同理 第二步: 访问http://loc

zgc55987的博客 571

ii2增删改查_Solr 控制台实现数据的增删改查

Solr 控制台实现数据的增删改查简单记录一下 solr 控制台的 CURD 的使用姿势I. CURD在 solr 提供的控制台上,提供了完整的 CURD 的支持;然而在实际使用的时候,却不一定能很顺手,特此记录一下我们测试的 shema 定义如下id: string # 默认的全局唯一字段content_id: long # 文章idtitle: string # 文章标题content: st...

weixin_42469083的博客 77

solr系列三:solr和spring整合并实现增删改查功能

在这篇文章中将带大家一步步实现spring和solr的整合,并实现solr的增删改查功能。

u010346953的专栏 854
上一篇: Solr7.2配置中文分析器和自定义业务域
下一篇: solr管理界面详解
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值