`
JLK
  • 浏览: 236191 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

solr 的基本操作

阅读更多
1.PostTool.Java

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class PostTool {
   
    public void postData(URL solrUrl, Reader data, Writer output) {
        HttpURLConnection urlc = null;
        try {
            urlc = (HttpURLConnection) solrUrl.openConnection();
            try {
                urlc.setRequestMethod("POST");
            } catch (Exception e) {

            }
            urlc.setDoOutput(true);
            urlc.setDoInput(true);
            urlc.setUseCaches(false);
            urlc.setAllowUserInteraction(false);
            urlc.setRequestProperty("Content-type", "text/xml; charset=utf-8");

            OutputStream out = urlc.getOutputStream();

            try {
                Writer writer = new OutputStreamWriter(out, "utf-8");
                pipe(data, writer);
                writer.close();
            } catch (IOException e) {

            } finally {
                if(out!=null) out.close();
            }

            InputStream in = urlc.getInputStream();
           
            try {
                Reader reader = new InputStreamReader(in);
                pipe(reader, output);
                reader.close();
            } catch (IOException e) {

            } finally {
                if(in!=null) in.close();
            }

        } catch (IOException e) {


        } finally {
            if(urlc!=null) urlc.disconnect();
        }
    }
   
    private static void pipe(Reader reader, Writer writer) throws IOException {
        char[] buf = new char[1024];
        int read = 0;
        while((read = reader.read(buf) ) >= 0) {
            writer.write(buf, 0, read);
        }
       
        writer.flush();
    }
   
    //
    public Document postData(String solrUrl) {
        Document document = null;
        try {
            URL url = new URL(solrUrl);
            HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
            urlc.setRequestProperty("Content-type", "text/xml; charset=utf-8");
            urlc.connect();
            BufferedReader in = new BufferedReader(new InputStreamReader(urlc.getInputStream(), "utf-8"));
            SAXReader reader = new SAXReader();
            document = reader.read(in);
           
            in.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
       
        return document;
    }
   
    //用于增加
    public void postData(String solrUrl, Document document) {
        try {
            URL url = new URL(solrUrl);
            ByteArrayInputStream stream = new ByteArrayInputStream(document.asXML().getBytes("utf-8"));
            final StringWriter sw = new StringWriter();
            postData(url, new InputStreamReader(stream,"utf-8"), sw);
            postData(url, new StringReader("<commit/>"), sw);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
   
}



2.SolrTest.Java

import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
* solr操作
* @author Rain
*/
public class SolrTest {
   
    public static String serverURL = "http://localhost:8080";
   
    /**
     * 查询,结果返回xml文档
     * url=http://localhost:8080/solr/select/?version=2.2&start=0&rows=10&indent=on&q=xm_s:测试
     * @param keyWord
     * @return Document
     */
    public Document select(String keyWord) {
        try {
            keyWord = URLEncoder.encode(keyWord, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String solrUrl = serverURL + "/solr/select/?version=2.2&start=0&rows=10&indent=on&q=xm_s:" + keyWord;
        return new PostTool().postData(solrUrl);
    }
   
    /**
     * 增加
     * url=http://localhost:8080/solr/update
     * @param xm 姓名
     * @param sfzhm 身份证
     */
    public void addDoc(String xm, String sfzhm) {
        String solrUrl = serverURL + "/solr/update";
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("add");
        Element doc = root.addElement("doc");
        Element field = null;

        field = doc.addElement("field");
        field.addAttribute("name", "id");
        field.addText(String.valueOf(System.currentTimeMillis()));

        field = doc.addElement("field");
        field.addAttribute("name", "xm_s");
        field.addText(xm);
       
        field = doc.addElement("field");
        field.addAttribute("name", "sfzhm_s");
        field.addText(sfzhm);
       
        new PostTool().postData(solrUrl, document);
    }
   
    /**
     * 修改(通过id修改)
     * @param id id
     * @param xm 姓名
     * @param sfzhm 身份证
     */
    public void update(String id, String xm, String sfzhm) {
        String solrUrl = serverURL + "/solr/update";
       
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("add");
        Element doc = root.addElement("doc");
        Element field = null;

        field = doc.addElement("field");
        field.addAttribute("name", "id");
        field.addText(id);

        field = doc.addElement("field");
        field.addAttribute("name", "xm_s");
        field.addText(xm);
       
        field = doc.addElement("field");
        field.addAttribute("name", "sfzhm_s");
        field.addText(sfzhm);
       
        new PostTool().postData(solrUrl, document);
    }
   
    /**
     * 删除
     * url=http://localhost:8080/solr/update
     * @param id id
     */
    public void delete(String id) {
        String solrUrl = serverURL + "/solr/update";
        try {
            URL url = new URL(solrUrl);
           
            final StringWriter sw = new StringWriter();
            PostTool postTool = new PostTool();
            postTool.postData(url, new StringReader("<delete><id>"+id+"</id></delete>"),sw);
            postTool.postData(url, new StringReader("<commit/>"), sw);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
   
    /**
     * 当前日期字符
     * @return String 日期字符
     */
    public static String getCurrentDateTime(String type) {
        SimpleDateFormat sdf = new SimpleDateFormat(type);
        String dateString = sdf.format(new Date());

        return dateString;
    }
   
    public static void main(String[] args) {
        SolrTest solrTest = new SolrTest();
       
        solrTest.addDoc("测试", "123456789");
        solrTest.addDoc("某人", "888888888");
        Document d = solrTest.select("测试");
        System.out.println(d.asXML());
       
        solrTest.update("1212547585639", "郁闷", "77777777777");
        //Document d = solrTest.select("郁闷");
        //System.out.println(d.asXML());
       
        solrTest.delete("1212547585639");
        //Document d = solrTest.select("郁闷");
        //System.out.println(d.asXML());
    }

}

分享到:
评论

相关推荐

    SOLR的学习资料

    **二、SOLR基本操作** 1. **增(Add)**:使用SOLR的HTTP API,通过POST请求将文档添加到索引。请求格式通常为`http://localhost:8983/solr/core_name/update?commit=true`,其中`core_name`是你的核心名,请求体...

    solr新版参考手册(apache-solr-ref-guide-4.4)

    手册的最后一部分往往还包含了一些高级主题,例如与Hadoop集成、地理空间搜索、以及与NoSQL数据库的集成等,这些主题可以吸引已经熟悉Solr基本操作的用户进一步深入探索。 值得注意的是,本手册是基于Apache软件...

    solr教程,绝对物有所值

    #### 四、Solr基本操作 1. **添加文档**:通过Solr API或者Solr Admin UI将文档添加到索引中。 2. **查询文档**:使用HTTP GET请求或POST请求向Solr发送查询,获取结果集。 3. **更新和删除文档**:可以通过更新...

    Solr操作说明文档

    "Solr 操作说明文档" Solr 是一个基于 Lucene 的企业搜索平台,它提供了强大的搜索功能和高效的索引处理能力。SolrCloud 是 Solr 的分布式搜索解决方案,能够提供高可用性和可扩展性的搜索服务。下面是 Solr 操作...

    solr基本总结

    ### Solr基本总结 #### 一、Solr简介 **Solr** 是一款基于 Java 开发的、开源的企业级全文搜索引擎。它不仅提供了强大的搜索功能,还具备一系列高级特性,适用于构建复杂的应用程序。 ##### 1.1 Solr 的定义 - **...

    solr(solr-9.0.0.tgz)

    然后可以通过POST请求将数据导入Solr,Solr会自动进行分词、建立倒排索引等操作,从而实现快速的全文检索。 Lucene是Solr的核心搜索引擎库,它提供了基本的搜索功能,如倒排索引、TF-IDF评分等。而Solr则在其基础上...

    solr6.5英文版操作说明文档

    ### Solr 6.5 英文版操作说明文档知识点概览 #### 一、Apache Solr 参考指南概述 - **版本说明**:该文档覆盖的是 Apache Solr 6.5 版本。 - **版权归属**:文档遵循 Apache 许可证 2.0 版本发布,任何使用均需符合...

    solr简单应用操作的代码部分

    在本教程中,我们将探讨Solr的基本应用操作,特别关注代码部分。 首先,我们要了解Solr的工作原理。Solr利用Lucene库进行索引和搜索,通过HTTP协议提供服务,支持JSON、XML等多种数据交换格式。一个典型的Solr应用...

    solr安装包下载地址

    3. `example`:这是一个示例Solr实例,包含了一个预配置的核心,可以用来快速启动并了解Solr的基本操作。 4. `dist`:存放Solr的JAR文件,包括solr-core.jar、solr-solrj.jar等。 5. `contrib`:包含了一些可选的...

    solr入门java工程

    Java客户端是与Solr通信的一种常见方式,它允许开发者通过编写Java代码来执行索引操作、查询、更新和管理Solr实例。在“solr-example”这个压缩包中,可能包含了一个简单的Java示例项目,展示了如何使用SolrJ,这是...

    Solr项目源码及solr资源包

    Solr项目源码及solr资源包是一个针对搜索引擎平台Apache Solr的学习与实践资源集合,主要结合了Spring Data Solr框架进行操作。这个项目旨在帮助开发者更好地理解和运用Solr进行数据索引和检索。让我们详细地探讨...

    solr5.5.4项目示例

    本项目示例是针对Solr 5.5.4版本的一个实践应用,旨在帮助用户了解并掌握Solr的基本操作,包括对索引的增加、删除、修改和查询。 1. **Solr安装与配置**:首先,你需要下载Solr 5.5.4版本,并解压到本地文件系统。...

    solr7官方文档

    索引和搜索是 Solr 的核心功能,文档在 "索引和基本数据操作" 和 "搜索" 部分详细讲解了如何进行有效的索引以及如何设计和执行高效的搜索查询。 最后,"文档、字段和模式设计" 部分则深入探讨了如何优化索引结构以...

    ambari离线安装solr所需文件

    总之,离线安装Solr在Ambari中是一项涉及多步操作的任务,需要对Ambari的架构和服务管理有深入理解,同时也需要对Solr的基本工作原理有所了解。通过遵循提供的资源和指南,可以有效地完成这个过程。

    java进阶Solr从基础到实战

    在本套课程中,我们将全面的讲解Solr,从Solr基础到Solr高级,再到项目实战,基本上涵盖了Solr中所有的知识点。 主讲内容 章节一:Solr基础(上) 1. 环境搭建 2. 核心讲解 3. 数据导入 4. 各种中文分析器 章节二:...

    solr6工具类

    在Solr6版本中,为了更方便地进行客户端操作,通常会使用SolrJ库,这是一个Java客户端库,它允许Java开发者与Solr服务器进行交互,执行CRUD(创建、读取、更新、删除)操作以及复杂查询。本文将深入探讨Solr6工具类...

    easynet.solr开发与使用

    这四大功能覆盖了Solr的基本操作需求,使得开发者无需深入了解Solr的底层细节,就能快速地在.NET项目中实现数据的索引和检索。 1. 添加:Easynet.Solr提供了便捷的添加文档(Document)的方法,允许开发者将数据...

    solr

    在本例中,通过`@Value`注解从配置文件中读取Solr服务的基本URL,并通过该URL实例化一个`HttpSolrServer`对象,以便与Solr服务器建立连接。 ```java @Value("${ph.solr.baseurl}") private String baseUrl; ...

Global site tag (gtag.js) - Google Analytics