solr7.1.0的一些索引库操作

1.添加索引库(因为配置了自增主键,所以不用添加id域)

solrClient = new HttpSolrClient(hotWords);
SolrInputDocument document = new SolrInputDocument();
            // 为文档添加域
            document.addField("genericName", genericName);
            document.addField("frequency", "0");
            solrClient.add(document);
solrClient.commit();
        solrClient.close();

2.索引库的删除操作:

(1):自增主键是id,根据id删除:

先根据genericName找到对应的索引,取到id,再根据id删除

SolrQuery query = new SolrQuery();
ModifiableSolrParams params = new ModifiableSolrParams();
query.setQuery("(medicineGoodsId:" + medicineId + ")");

    params.add(query);
    QueryResponse response = solrClient.query(params);
    SolrDocumentList results = response.getResults();
    if (null != results && results.size() != 0) {
        for (SolrDocument solrDocument : results) {
            String id = solrDocument.get("id").toString();
            solrClient.deleteById(id);
        }
    }

(2):自增主键不是id,而是自定义主键:

solrClient = new HttpSolrClient(hotWords);

        List<String> deleteNames = new ArrayList<>();

        List<String> controlDeleteNames = searchJcMedicineResultMapper.getControlDeleteNames(param);
        List<String> noControlDeleteNames = searchJcMedicineResultMapper.getNoControlDeleteNames(param);
        deleteNames.addAll(controlDeleteNames);
        deleteNames.addAll(noControlDeleteNames);
        HashSet h = new HashSet(deleteNames);
        deleteNames.clear();
        deleteNames.addAll(h);

        List<String> addNames = searchJcMedicineResultMapper.getAddNames(param);

        if (deleteNames.size()!=0){
            solrClient.deleteById(deleteNames);
        }

其实还有很多方法删除索引:可以一个一个删,也可以批量删除:

3.索引库的修改操作:

//查询索引库,看索引库是否有这个key
            hotsolrClien = new HttpSolrClient(hotWords);
            SolrQuery query1 = new SolrQuery();
            query1.setQuery("(genericName:" + keyword + ")");
            try {
                ModifiableSolrParams params2 = new ModifiableSolrParams();
                params2.add(query1);
                QueryResponse response = hotsolrClien.query(params2);
                SolrDocumentList results = response.getResults();
                if (null != results && results.size() != 0) {
                    String frequencys = results.get(0).get("frequency").toString();
                    Integer frequency = Integer.parseInt(frequencys) + 1;
                    HashMap<String, Object> oper = new HashMap<>();
                    oper.put("set", frequency);
                    SolrInputDocument inputDocument = new SolrInputDocument();
                    inputDocument.addField("genericName", results.get(0).get("genericName").toString());
                    inputDocument.addField("frequency", frequency);
                    hotsolrClien.add(inputDocument);
                }
                hotsolrClien.commit();
                hotsolrClien.close();
            } catch (SolrServerException e) {
                throw new CustomServiceException(ErrorCodeEnum.DATA_NOT_EXIST.getCode(), ErrorCodeEnum.DATA_NOT_EXIST.getMessage());
            } catch (IOException e) {
                throw new CustomServiceException(ErrorCodeEnum.DATA_NOT_EXIST.getCode(), ErrorCodeEnum.DATA_NOT_EXIST.getMessage());
            }

这篇文章可以作为借鉴:https://www.cnblogs.com/shaosks/p/8032996.html

猜你喜欢

转载自blog.csdn.net/weixin_40910372/article/details/79541347