【Solr】solr的增删改查

目录

创建工程

普通的java web工程即可,我采用的是spring mvc!

@Autowired
private SolrServer solrServer; @Override
public void addInterForProduct() throws Exception
{
// 构造一篇文档
SolrInputDocument document = new SolrInputDocument();
//往doc中添加字段,在客户端这边添加的字段必须在服务端的配置文件中有定义
document.addField("id", "num002");
document.addField("title_ik", "113333");
document.addField("content_ik", "11"); solrServer.add(document);
UpdateResponse response = solrServer.commit();
System.out.println("---UpdateResponse-"+response);
}

请求后,返回值为

---UpdateResponse-{responseHeader={status=0,QTime=288}}

status = 0 为成功!失败的情况还没测出来,不知道返回值是什么。知道的童鞋,请告知。

用solr界面查询一下,新增加的已经填入索引库!

{
"responseHeader": {
"status": 0,
"QTime": 2,
"params": {
"q": "id:num002",
"indent": "true",
"wt": "json",
"_": "1457489330978"
}
},
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "num002",
"title_ik": "113333",
"content_ik": [
"11"
],
"_version_": 1528288311726047200
}
]
}
}

    @Override
public void deleteInterForProduct() throws Exception {
// 删除id域中有num002关键字的文档
solrServer.deleteByQuery("id:num002"); // 删除solr服务端索引库中所有的文档
//solrServer.deleteByQuery("*:*"); UpdateResponse response =solrServer.commit();
System.out.println("---deleteInterForProduct-"+response);
}

删除了id=num002的文档,可以删除库中的所有文档。

返回值

---deleteInterForProduct-{responseHeader={status=0,QTime=54}}

再次查询websolr,结果已经不存在了。

所谓solr的更新操作,就是就是对相同id的文档重新添加一次。

        SolrQuery query = new SolrQuery();

        // 给query设置一个主查询条件:关键词
query.set("q", "id:num001"); QueryResponse response = solrClient.query(query); SolrDocumentList docs = response.getResults(); long numFound = docs.getNumFound(); System.out.println("总共查询到的文档数量: " + numFound); for (SolrDocument doc : docs) { System.out.println(doc.get("id"));
System.out.println(doc.get("title_ik"));
System.out.println(doc.get("content_ik")); }

高量查询

SolrQuery query = new SolrQuery();

        // 给query设置一个主查询条件:关键词
query.set("q", "台灯"); // 给query增加范围过滤查询条件
// query.addFilterQuery("product_price:[0 TO 200]"); // 给query增加布尔过滤条件
// query.addFilterQuery("-product_name:台灯"); /**
* 这一句等价于上面两句过滤条件设置
*/
// query.set("fq", "product_price:[0 TO 200] -product_name:台灯"); // 给query设置默认搜索域
query.set("df", "product_keywords"); // 设置返回结果的排序规则
query.setSort("product_price", ORDER.desc); // 设置分页参数
query.setStart(0);
query.setRows(20); QueryResponse response = solrClient.query(query); SolrDocumentList docs = response.getResults(); long numFound = docs.getNumFound(); System.out.println("总共查询到的文档数量: " + numFound); for (SolrDocument doc : docs) { System.out.println(doc.get("id"));
System.out.println(doc.get("product_price"));
System.out.println(doc.get("product_name"));
System.out.println(doc.get("product_catalog_name")); }
上一篇:gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,


下一篇:过河问题--nyoj题目47