solr学习基础
2016-04-05 23:00
281 查看
1.增删改查
package com.xiang; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { Oper oper = new Oper(); // 单条删除 //oper.DataDeleteOne("2"); // 批量删除 List<String> ids = new ArrayList<String>(); for (int i = 1; i <= 1800; i++) { ids.add(String.valueOf(i)); } oper.DataDeleteAll(ids); /*long startTime = System.currentTimeMillis(); // 单条添加 oper.DataWriteOne("1001", "zzy", "test"); // 批量添加 //oper.DataWriteAll(); long endTime = System.currentTimeMillis(); System.out.println("用时:" + (endTime - startTime) / 1000.00 + "s");*/ /*try { oper.Search("*:*", 3, 0); } catch (SolrServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } }
package com.xiang; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.SolrRequest.METHOD; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; //增删改查 public class Oper { // 批量写入 public void DataWriteAll() { CloudSolrClient solr = new solrclient().solrClient(); List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); for (int i = 1; i <= 1000; i++) { SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", String.valueOf(i)); doc.addField("name", "test"); doc.addField("title", "biaoti"); docs.add(doc); } try { solr.add(docs); solr.commit(); solr.close(); } catch (SolrServerException | IOException e) { e.printStackTrace(); } } // 写入单条 public void DataWriteOne(String id, String name, String title) { CloudSolrClient solr = new solrclient().solrClient(); SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", id); doc.addField("name", name); doc.addField("title", title); try { solr.add(doc); solr.commit(); solr.close(); } catch (SolrServerException | IOException e) { e.printStackTrace(); } } // 删除单条数据 public void DataDeleteOne(String id) { CloudSolrClient solr = new solrclient().solrClient(); try { solr.deleteById(id); solr.commit(); solr.close(); } catch (SolrServerException | IOException e) { e.printStackTrace(); } } // 删除多条数据 public void DataDeleteAll(List<String> ids) { CloudSolrClient solr = new solrclient().solrClient(); try { solr.deleteById(ids); solr.commit(); solr.close(); } catch (SolrServerException | IOException e) { e.printStackTrace(); } } //查 public void Search(String query, int pagesize, int pageoffset) throws SolrServerException, IOException{ CloudSolrClient solrClient = new solrclient().solrClient(); System.out.println("solr查询: " + query); SolrQuery solrQuery = new SolrQuery(query); solrQuery.setStart(pageoffset);//从pageoffset+1条开始取 分页用 solrQuery.setRows(pagesize);//取pagesize条数据 分页用 solrQuery.setSort("id", SolrQuery.ORDER.asc);//按id排序 QueryResponse queryResponse = null; queryResponse = solrClient.query(solrQuery, METHOD.POST); SolrDocumentList solrDocumentList = queryResponse.getResults(); System.out.println(solrDocumentList.getNumFound()); List<Ceshi>list = (List<Ceshi>) SolrObject.toBeanList(solrDocumentList, Ceshi.class);//转成list集合 } }
package com.xiang; import org.apache.solr.client.solrj.impl.CloudSolrClient; public class solrclient { public CloudSolrClient solrClient() { String zookeeperHost = "192.168.17.128:2181/solr"; String collections = "ceshi"; int zookeeperClientTimeout = 20000; int zookeeperConnectTimeout = 1000; CloudSolrClient cloudSolrServer = new CloudSolrClient(zookeeperHost); cloudSolrServer.setZkClientTimeout(zookeeperClientTimeout); cloudSolrServer.setZkConnectTimeout(zookeeperConnectTimeout); cloudSolrServer.setDefaultCollection(collections); cloudSolrServer.connect(); return cloudSolrServer; } }
package com.xiang; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import org.apache.commons.beanutils.BeanUtils; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; //把 solrdocumentlist 对象直接转换成一个bean 集合 public class SolrObject { public static Object toBean( SolrDocument record , Class classclass){ Object o = null; try { o = classclass.newInstance(); } catch (InstantiationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Field[] fields = classclass.getDeclaredFields(); for(Field field:fields){ Object value = record.get(field.getName()); try { BeanUtils.setProperty(o, field.getName(), value); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return o; } public static Object toBeanList(SolrDocumentList records, Class classclass){ List list = new ArrayList(); for(SolrDocument record : records){ list.add(toBean(record,classclass)); } return list; } }
package com.xiang; public class Ceshi { private String id; private String name; private String title; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
附:
solr Query:/article/4850320.html
solr:http://www.cnblogs.com/HD/category/613196.html
相关文章推荐
- mono+jexus 验证码不显示:System.Drawing
- 结对编程 黄金点游戏
- STL学习系列四:Stack容器
- socket
- JavaScript编码解码
- Nginx On rhel6.4
- NSCopying、NSCoding
- 有序链表合并
- Android开发实践:使用Service还是Thread
- 文件的结构
- oprofile
- pi
- 推荐 10 款最好的 Python IDE
- 我是一个线程(对理解多线程很有帮助)
- 推荐 10 款最好的 Python IDE
- 修改maven本地仓库存放位置
- Android React-Native系列之<一>零基础搭建React-Native开发环境
- PHP中array_multisort与asort,arsort的用法
- 【codechef】交换字符串S的两个位置上的字符,求有多少对AB不相似
- 软件开发的吐槽与思考