【Solr】中间件-solr快速使用

这篇具有很好参考价值的文章主要介绍了【Solr】中间件-solr快速使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pom中添加依赖:

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

提供一个demo:文章来源地址https://www.toymoban.com/news/detail-506721.html

package com.xiaobai.util;

import org.apache.solr.client.solrj.impl.HttpSolrClient;

/**
 * @Author xiaobai
 * @Date 2023/6/25 9:35
 * @Title: SolrUtil
 * @Package com.xiaobai.util
 * @description:
 */
public class SolrUtil {
    /**
     * 获取SolrClient
     * solrj 6.5及以后版本获取方式
     *
     * @return
     */
    public static HttpSolrClient getSolrClient(String url) {
        /*
         * 设置超时时间
         * .withConnectionTimeout(10000)
         * .withSocketTimeout(60000)
         */
        return new HttpSolrClient.Builder(url)
                .withConnectionTimeout(10000)
                .withSocketTimeout(60000)
                .build();
    }
}


package com.xiaobai.util.main;

import com.xiaobai.util.SolrUtil;
import org.apache.commons.math3.stat.descriptive.summary.Product;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.FieldAnalysisRequest;
import org.apache.solr.client.solrj.response.AnalysisResponseBase;
import org.apache.solr.client.solrj.response.FieldAnalysisResponse;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;

import java.io.IOException;
import java.util.*;

/**
 * @Author xiaobai
 * @Date 2023/6/25 9:37
 * @Title: TestSolr
 * @Package com.xiaobai.util.main
 * @description:
 */
public class TestSolr {
    private final static String BASE_URL = "http://127.0.0.1:8983/solr";
    private final static String CORE_NAME = "hello_world";


    public static void query() throws Exception {
        // TODO Auto-generated method stub
        HttpSolrClient client = SolrUtil.getSolrClient(BASE_URL);
        Map<String, String> param = new HashMap<String, String>();
        param.put("q", "*:*");// 查询条件
        param.put("start", "0");
        param.put("rows", "2000000");// 返回记录数
        SolrParams sparam = new MapSolrParams(param);// 查询参数

        QueryResponse res = client.query(CORE_NAME, sparam);
        SolrDocumentList result = res.getResults();// 获取结果
        for (SolrDocument document : result) {// 遍历返回结果
            System.out.println("name==" + document.get("name") +
                    "id==" + document.get("id"));
        }
    }

    public static void add() throws SolrServerException, IOException {
        //构造一篇文档(对象)
        SolrInputDocument document = new SolrInputDocument();
        //往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
        document.addField("id", "88888888");
        document.addField("name", "可可爱爱没有脑袋");
        //获得一个solr服务端的请求,去提交  ,选择具体的某一个solr core
        HttpSolrClient solr = new HttpSolrClient.Builder(BASE_URL + CORE_NAME).build();
        solr.add(document);
        solr.commit();
        solr.close();
    }

    /**
     * 根据id从索引库删除文档
     */
    public static void deleteById(String id) throws Exception {
        //选择具体的某一个solr core
        HttpSolrClient server = new HttpSolrClient.Builder(BASE_URL + CORE_NAME).build();
        //删除文档
        //server.deleteById("036cd386-fbb0-4dde-8c47-f580b938538e");
        server.deleteByQuery("id:"+id);
        //删除所有的索引
        //solr.deleteByQuery("*:*");
        //提交修改
        server.commit();
        server.close();
    }


    public static List<String> getAnalysis(String sentence) {
        SolrClient client = SolrUtil.getSolrClient(BASE_URL);
        FieldAnalysisRequest request = new FieldAnalysisRequest("/"+CORE_NAME+"/query");
        request.addFieldName("name");// 字段名,随便指定一个支持中文分词的字段
        request.setFieldValue("");// 字段值,可以为空字符串,但是需要显式指定此参数
        request.setQuery(sentence);
        FieldAnalysisResponse response = null;
        try {
            response = request.process(client);
        } catch (Exception e) {
            e.printStackTrace();
        }
        List<String> results = new ArrayList<String>();
        Iterator<AnalysisResponseBase.AnalysisPhase> it = response.getFieldNameAnalysis("name").getQueryPhases().iterator();
        while (it.hasNext()) {
            AnalysisResponseBase.AnalysisPhase pharse = it.next();
            List<AnalysisResponseBase.TokenInfo> list = pharse.getTokens();
            for (AnalysisResponseBase.TokenInfo info : list) {
                results.add(info.getText());
            }
        }
        return results;
    }


}


到了这里,关于【Solr】中间件-solr快速使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【中间件】通过 docker-compose 快速部署 Kafka 保姆级教程

    Kafka是由Apache基金会开发的分布式流处理平台,采用发布-订阅模式,支持高吞吐量、低延迟的数据传输。主要用于处理实时数据管道、数据存储和数据分析等大数据应用场景。Kafka采用高效的数据压缩算法,可以在集群中存储大量的数据,并通过分区机制来实现数据的高可靠

    2024年02月12日
    浏览(36)
  • 【中间件-Openjob】高性能任务调度框架Openjob简介及快速搭建

    一款分布式高性能任务调度框架,支持多种定时任务、延时任务、工作流设计、轻量级分布式计算、无限水平扩容,并具有较高的可伸缩性和容错性,以及完善权限管理、强大的告警监控、原生支持多语言。 基础信息 中文官网 :https://openjob.io/zh-Hans/ 开源地址 :https://githu

    2024年02月12日
    浏览(48)
  • 【ASP.NET Core 基础知识】--中间件--内置中间件的使用

    ASP.NET Core 中包含很多内置的中间件,我们不可能对每一个内置的中间件进行一一讲解,并且中间件的使用步骤大致一样,因此本文讲解几个常用的内置中间件以及使用中间件的步骤,希望读者们可以举一反三。 一、内置中间件的介绍 1.1 静态文件中间件 在ASP.NET Core中,静态

    2024年01月17日
    浏览(40)
  • Django操作cookie、Django操作session、Django中的Session配置、CBV添加装饰器、中间件、csrf跨站请求

    1 Django操作cookie 2 Django操作session 3 Django中的Session配置 4 CBV添加装饰器 5 中间件 6 csrf跨站请求 6.1 使用django官方提供的js文件进行csrf认证

    2024年02月13日
    浏览(36)
  • session中间件的使用

    npm i express-session 说明: 设置了session的名称为\\\"sid\\\",这是cookie的名称,默认值是connect.id。 设置了一个密钥\\\"forever\\\",用于对session数据进行加密和签名。 设置了两个选项:saveUninitialized和resave。saveUninitialized表示是否每次请求自动创建cookie用来存储session的id,默认值为false;resave表示是

    2024年02月16日
    浏览(31)
  • 中间件redis的使用

    Java中的中间件配置体现在springboot的yml配置文件中。Springboot框架支持微服务和中间件和restful api远程服务的调用。中间件是Java web系统的中间层的服务系统的调用接口。Springboot的自动装配和约定大于配置机制初始化springcontext的容器空间和注册组件。使用容器管理服务注册对象

    2024年02月05日
    浏览(38)
  • solr快速上手:搭建solr集群并创建核心,设置数据同步(十一)

    前几章我们已经讲解了solr单机版的基本使用,但实际生产中,为了保证高可用、高性能,我们一般会采用集群模式,所以接下来,我们继续讲解solr集群的搭建和基本操作 在讲解solr集群模式前,我们要先了解“分片”的概念。 当节点由一个拓展为多个时,数据存储和同步问

    2024年02月13日
    浏览(53)
  • 前端中间件Midway的使用

    Midway 是阿里巴巴 - 淘宝前端架构团队,基于渐进式理念研发的 Node.js 框架,通过自研的依赖注入容器,搭配各种上层模块,组合出适用于不同场景的解决方案。 Midway 基于 TypeScript 开发,结合了面向对象(OOP + Class + IoC)与函数式(FP + Function + Hooks)两种编程范式,并在此之

    2024年02月06日
    浏览(29)
  • 使用Go编写HTTP中间件

    在Go语言中,HTTP中间件是一种处理HTTP请求和响应的函数,它可以拦截到请求并对其进行处理,然后再将请求传递给下一个中间件或目标处理程序。HTTP中间件在Web应用程序中非常常见,它提供了一种机制来执行各种任务,例如身份验证、授权、日志记录和错误处理等。 下面是

    2024年01月23日
    浏览(34)
  • GoReplay中间件python版本使用

    目录 GoReplay的middlware原理 python版本环境搭建 python环境安装 gor库环境安装 python代码编写 goreplay中间件使用 中间件是一个程序,它在 STDIN 上接受请求和响应负载,并在 STDOUT 上发出修改后的请求。您可以实现任何自定义逻辑,例如剥离私有数据、高级重写、支持 oAuth 等。 中间

    2024年02月21日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包