java solr 基本操作demo

搜索推荐

2017-06-27

82

0

技术:solr+ java8

运行环境:IDEA 15.2 + jdk8 + windows 7 + solr

demo功能:提供一个对solr基本访问的操作代码demo

搭建solr服务器

我使用docker 官方提供的镜像搭建的

1. docker pull solr

2. 启动一个solr实例  docker run --name solr -d -p 8983:8983 -t solr

3. 创建一个core。其实这个core以便操作数据。 docker exec -it --user=solr solr bin/solr create_core -c yuewen

4. 访问http://xxxxxx:8983/solr/, 出现下面界面, 即安装ok

添加文档进入solr

//添加一个文档, 只要id每次不同, 则每次调用都会添加一个新的文档, 如果id相同,则表示添加同一个文档, 这个文档会被更新掉
public static void addDoc(String value) throws IOException, SolrServerException {
    SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
    SolrInputDocument tmpDoc = new SolrInputDocument();
    tmpDoc.addField("value", value);
    tmpDoc.addField("id", 112);
    Collection docs = new ArrayList();
    docs.add(tmpDoc);
    UpdateResponse tmpResponse = null;
    try {
        tmpResponse = solrClient.add(docs);
        solrClient.commit();
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            solrClient.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    System.out.println(tmpResponse.getElapsedTime());
}

查找任意字段包含的一个关键字

//单个关键字查询
public static void query() throws IOException, SolrServerException {
    SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
    Map<String, String> tmpMap = new HashMap<>();
    tmpMap.put("indent", "off");//是否格式化输出结果, 如果你在网页上测试, 可以选择 on, 如果是api调用,请选择关闭, 减少数据传输
    tmpMap.put("q", "*updateDocupdateDoc*");//关键字
    tmpMap.put("wt", "json");//输出格式
    SolrParams tmpParams = new MapSolrParams(tmpMap);
    QueryResponse tmpResponse = solrClient.query(tmpParams);
    solrClient.close();
    System.out.println(tmpResponse.getResults().getNumFound());//打印查询的总条数
}

在一个字段中查找匹配多个关键字

//多个关键字查询
public static void query_muti() throws IOException, SolrServerException {
    SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
    Map<String, String> tmpMap = new HashMap<>();
    tmpMap.put("indent", "off");//是否格式化输出结果, 如果你在网页上测试, 可以选择 on, 如果是api调用,请选择关闭, 减少数据传输
    tmpMap.put("q", "*:*");
    tmpMap.put("fq", "id:111 112");//查找id字段中包含111 或者 112的数据
    tmpMap.put("wt", "json");//输出格式
    SolrParams tmpParams = new MapSolrParams(tmpMap);
    QueryResponse tmpResponse = solrClient.query(tmpParams);
    solrClient.close();
    System.out.println(tmpResponse.getResults().getNumFound());//打印查询的总条数
}

欢迎添加微信,互相学习↑↑↑ -_-

发表评论

全部评论:0条

白老虎

programming is not only to solve problems, ways to think