zoukankan      html  css  js  c++  java
  • solr client 简化solr编程

    做solr的开发已经很长时间了,对于官方的solrj还是不是很满意,所以为了广大solrer能更方便的利用solr,个人封装了一些代码,算是一个小小的框架把,欢迎大家拍砖。

    目前项目已经开源,地址:http://code.google.com/p/clientforsolr/
    目前的功能:

    1》对solr的commit,update,delete,optimize等进行了封装,提供了更加方便的操作;
    2》对实体类到SolrInputDocument或者SolrDocument到实体类或者SolrDocument到SolrInputDocument提供了简单的转换;
    3》提供了SolrServer更加便利的获取方法;

    简单介绍,更多详情见http://code.google.com/p/clientforsolr/


    例如:
    Java代码
    1. People p = new People();  
    2. p.setId(1);  
    3. p.setName("1987");  
    4. p.setAge(22);  
    5. SolrInputDocument sid = EntityConvert.entity2SolrInputDocument(p);  
    People p = new People(); p.setId(1); p.setName("1987"); p.setAge(22); SolrInputDocument sid = EntityConvert.entity2SolrInputDocument(p);

    官方提供的 DocumentObjectBinder,如果实体类没有赋值的话,就可能会报错,但是大部分的时间,实体类的每个属性是不可能赋值的。

    对于上述的转换,目前,solr的schema.xml的字段名要与实体类的属性名一致,并且提供setter和getter方法,只要满足以上两点即可转换。

    Java代码
    1. SolrDocument sd = new SolrDocument();  
    2. sd.addField("id", 1);  
    3. sd.addField("name", "1987");  
    4. sd.addField("age", 22);  
    5. People p = EntityConvert.solrDocument2Entity(sd, People.class);  
    SolrDocument sd = new SolrDocument(); sd.addField("id", 1); sd.addField("name", "1987"); sd.addField("age", 22); People p = EntityConvert.solrDocument2Entity(sd, People.class);

    反向转换。

    更多请参见api文档!

    对于crud,也提供了更加方便的操作,

    Java代码
    1. // 删除所有记录  
    2. public void deleteAll(SolrServer server);   
    3. // 删除idArrays数组中的记录,该数组中的元素为document的Id,idName为主键名  
    4. public void deleteById(Object[] idArrays, String idName, SolrServer server);  
    5. // 删除单个id记录  
    6. public void deleteById(Object id, String idName, SolrServer server);  
    7. // 删除某个对象,该对象必须有id  
    8. public void deleteByExample(Object obj, String idName, SolrServer server);  
    9. // 更新一个对象,主键必须提供,  
    10. public void update(Object obj, String idName, SolrServer server);  
    11. // 批量更新,Map的key为id,value为要更新的对象  
    12. public void update(Map<Object, Object> objMap, String idName, SolrServer server);  
    13. // 批量提交数据  
    14. public void commit(List<Object> objectList, SolrServer server);  
    15. // 提交一条记录  
    16. public void commit(Object obj, SolrServer server);  
    17. //  查询数据,提供分页支持,第一个参数:SolrParams封装了查询参数;第二个参数要查询的类;第三个参数起始记录;第四个参数查询数据量  
    18. public <T>PaginationSupport<T> query(SolrParams params, Class<T> cls, int start, int rows, SolrServer server);  
    19. // 查询数据,提供分页支持,第一个参数:查询的字符串;第二个参数要查询的类;第三个参数起始记录;第四个参数查询数据量  
    20. public <T>PaginationSupport<T> query(String keyword, Class<T> cls, int start, int rows, SolrServer server);  
    // 删除所有记录 public void deleteAll(SolrServer server);  // 删除idArrays数组中的记录,该数组中的元素为document的Id,idName为主键名 public void deleteById(Object[] idArrays, String idName, SolrServer server); // 删除单个id记录 public void deleteById(Object id, String idName, SolrServer server); // 删除某个对象,该对象必须有id public void deleteByExample(Object obj, String idName, SolrServer server); // 更新一个对象,主键必须提供, public void update(Object obj, String idName, SolrServer server); // 批量更新,Map的key为id,value为要更新的对象 public void update(Map<Object, Object> objMap, String idName, SolrServer server); // 批量提交数据 public void commit(List<Object> objectList, SolrServer server); // 提交一条记录 public void commit(Object obj, SolrServer server); //  查询数据,提供分页支持,第一个参数:SolrParams封装了查询参数;第二个参数要查询的类;第三个参数起始记录;第四个参数查询数据量 public <T>PaginationSupport<T> query(SolrParams params, Class<T> cls, int start, int rows, SolrServer server); // 查询数据,提供分页支持,第一个参数:查询的字符串;第二个参数要查询的类;第三个参数起始记录;第四个参数查询数据量 public <T>PaginationSupport<T> query(String keyword, Class<T> cls, int start, int rows, SolrServer server);


    更有提供了SolrServerFactory,更方便的获取SolrServerFactory,获取方式有两种:一种是通过配置文件中,提供SolrHome;第二种是通过程序中给定。

    目前,还处于开发中,后续还有更多强大功能正在筹划中... ...
  • 相关阅读:
    Spring MVC异常处理
    tomcat bio nio apr 模式性能测试
    事务中处理异常
    Cookie和Session
    SpringMVC表单标签简介
    <mvc:annotation-driven/>
    真机调试
    Xcode 9,真机测试,App installation failed
    KONE-FLOW Vistor Key
    cordova 内部API 用ssl https,报错
  • 原文地址:https://www.cnblogs.com/wycg1984/p/1681596.html
Copyright © 2011-2022 走看看