栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过使用SolrJ操作solr

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过使用SolrJ操作solr

1、创建maven项目,导入依赖
    
        
            org.apache.solr
            solr-solrj
            8.2.0
        
    
2、基本代码
package com.hyc.solr;

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;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;


public class FirstAccess {
    public static void main(String[] args) {

        //  save(); // 调用保存
        // delete(); // 调用删除方法
        search();

    }

    
    public static void search() {
        HttpSolrClient client = null;

        try {
            // 创建客户端,给定url
            String url = "http://192.168.2.130:8983/solr/bjsxt";
            client = new HttpSolrClient.Builder(url).build();

            // 查询参数
            SolrQuery params = new SolrQuery();
            // 提供搜素关键字
            params.setQuery("title_zh_cn:solrJ保存的数据");

            //排序规则 根据id升序排列 , asc :升序
            params.setSort("id", SolrQuery.ORDER.asc);

            //分页
            params.setStart(0);
            params.setRows(2);

            //高亮处理
            params.setHighlight(true); // 开启高亮处理
            params.addHighlightField("title_zh_cn"); // 设置高亮字段
            params.setHighlightSimplePre("");// 设置高亮前缀
            params.setHighlightSimplePost("");// 设置后缀


            // 搜索数据
            QueryResponse response = client.query(params);

            // 从响应的数据中获取高亮响应数据
            Map>> highlighting = response.getHighlighting();


            // 获得返回的结果集 是solrdocumentList是list的接口实现 。固定范型 Solrdocument
            SolrdocumentList doList = response.getResults();
            System.out.println("本次查询返回数据的行数:" + doList.size());
            System.out.println("本次查询返回数据的总行数:" + doList.getNumFound());


            for (Solrdocument doc : doList) {
                System.out.println("id:" + doc.getFieldValue("id") + ",title_zh_cn" + doc.getFieldValue("title_zh_cn"));

                Map> map = highlighting.get(doc.getFieldValue("id"));


                //判断是否存在高亮数据
                if (map != null && map.size() > 0) {
                    // 有高亮数据
                    List hlStrList = map.get("title_zh_cn");
                    System.out.println("高亮的数据是:" + hlStrList);
                } else {
                    doc.get("title_zh_cn");
                }


            }





            

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 关闭连接资源
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    
    public static void delete() {
        HttpSolrClient client = null;

        try {
            // 创建客户端,给定url
            String url = "http://192.168.2.130:8983/solr/bjsxt";
            client = new HttpSolrClient.Builder(url).build();

            client.deleteById("2000");             // 根据id删除solr数据

            client.deleteById(Arrays.asList("1", "2")); // 批量删除

            client.deleteByQuery("title_zh_cn"); // 条件删除
            // 提交数据
            client.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    // 保存数据到solr,如果主键的字段id值唯一就是新增,如果不是就是更改(覆盖)

    public static void save() {
        HttpSolrClient client = null;

        try {
            // 创建客户端,给定url
            String url = "http://192.168.2.130:8983/solr/bjsxt";
            client = new HttpSolrClient.Builder(url).build();

            //创建保存数据的对象
            SolrInputdocument doc = new SolrInputdocument();
            // id 为字符串类型
            doc.addField("id", "2002"); // 指定id
            // 指定保存数据,数据覆盖
            doc.addField("title_zh_cn", "solrJ保存的数据2");
            // 添加到solr
            client.add(doc);
            client.commit(); // 提交当前url当前指向的core collection
            //client.commit("bjsxt"); //指定 名称的提交事务
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }

}

详情:笔记

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号