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