设为首页 收藏本站
查看: 732|回复: 0

[经验分享] solr 的基本操作

[复制链接]

尚未签到

发表于 2016-12-15 10:48:50 | 显示全部楼层 |阅读模式
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());
    }

}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314680-1-1.html 上篇帖子: Solr技术在电商中的应用 下篇帖子: solr中的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表