代码如下:
private static HttpSolrServer server = null; private static SolrSearchUtils instance = new SolrSearchUtils(); /** * 单利模式 */ public static SolrSearchUtils getInstance(String sellerCode){ initServiceParam(TopUp.upConfig(sellerCodeRels.get(sellerCode) == null ? "" : sellerCodeRels.get(sellerCode))); return instance; } /** * 初始化参数 * @param url */ private static void initServiceParam(String url){ server = new HttpSolrServer(url); server.setAllowCompression(true); server.setSoTimeout(60000); // socket read timeout server.setConnectionTimeout(100); server.setDefaultMaxConnectionsPerHost(100); server.setMaxTotalConnections(100); server.setFollowRedirects(false); // defaults to false server.setAllowCompression(true); server.setMaxRetries(1); // defaults to 0. > 1 not recommended. } /** * 定义添加那些字段 * @param pro 为一个实体对象 * @return */ public static SolrInputDocument parese(Product pro) { SolrInputDocument doc = new SolrInputDocument(); doc.addField("productCode", pro.getProductCode()); doc.addField("productName", pro.getProductName()); doc.addField("remarkName", pro.getRemarkName()); doc.addField("productDetails", pro.getProductDetails()); doc.addField("mainpicUrl", pro.getMainpicUrl()); doc.addField("originalPrice", pro.getOriginalPrice()); doc.addField("currentPrice", pro.getCurrentPrice()); doc.addField("updateTime", pro.getUpdateTime()); doc.addField("oneId", pro.getOneId()); doc.addField("oneName", pro.getOneName()); doc.addField("twoId", pro.getTwoId()); doc.addField("twoName", pro.getTwoName()); doc.addField("brandCode", pro.getBrandCode()); doc.addField("brandCodeName", pro.getBrandCodeName()); doc.addField("productNumber", pro.getProductNumber()); doc.addField("sellerCode", pro.getSellerCode()); doc.addField("tagList", pro.getTagList()); doc.addField("propertyValue", pro.getPropertyValue()); doc.addField("stockNum",pro.getStockNum()); return doc; } /** * 添加单个商品到索引库 * @param Product */ public void addOne(Product pro){ SolrInputDocument doc = parese(pro); try { server.add(doc); server.commit(); } catch (SolrServerException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 添加多个商品到索引库 * @param Product */ public void addList(List<Product> pro){ List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); for (Product pinfo : pro) { SolrInputDocument doc = parese(pinfo); docs.add(doc); } try { server.add(docs); server.optimize(); server.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 修改单个商品索引 * @param Product */ public void updateOne(Product pro){ addOne(pro); } /** * 删除全部商品索引,尽量不要使用 */ public void delete(){ try { server.deleteByQuery("*:*"); server.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 根据商品的zid删除单个商品索引 */ public void deleteById(String productCode){ try { server.deleteById(productCode); server.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
Product 实体详解:
并通过solrj的注解Field来实现实体的自动注入
** * 商品缓存的实体类 * @author zhouguohui * @version 1.0 */ public class Product { /** * 商品ID */ @Field private String productCode ; /** * 商品名称 */ @Field private String productName; /** * 商品副标题名称 */ @Field private String remarkName; /** * 商品详情信息 */ @Field private String productDetails; /** * 图片url地址 */ @Field private String mainpicUrl; /** * 商品原价 */ @Field private Double originalPrice; /** * 当前价格 */ @Field private Double currentPrice; /** * 更新时间 */ @Field private Date updateTime; /** * 一级ID */ @Field private List<String> oneId; /** * 一级name */ @Field private List<String> oneName; /** * 二级ID */ @Field private List<String> twoId; /** * 二级name */ @Field private List<String> twoName; /** * 商品规格 */ @Field private List<String> propertyValue ; /** * 品牌ID */ @Field private String brandCode; /** * 品牌名称 */ @Field private String brandCodeName; /** * 商品销量 */ @Field private int productNumber; /** * 商品卖家 */ @Field private String sellerCode; /** * 标签 */ @Field private String tagList; /** * 商品库存 0代表没有库存 1代表有库存 */ @Field private int stockNum;
相关推荐
主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询
solr部署在tomcat势必要设置用户权限,所以客户端solrj在创建连接的时候也需要用户名加密码
solrj工具类封装,包括条件批量查询,批量增删改,分段修改。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。...Solrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr 索引的接口。http://wiki.chenlb.com/solr/doku.php?id=solrj
放了SolrJ6.3.0所有web工程下的Jar包。solr-solrj6.3.0.jar等。放了SolrJ6.3.0所有web工程下的Jar包。放了SolrJ6.3.0所有web工程下的Jar包。
solr-solrj 5.0.0 和自己搭建的solr服务交互
solrJ是Java连接solr进行查询检索和索引更新维护的jar包。
solr-solrj-4.9.0.jar
压缩文件里面有solr-solrj-4.10.3.jar和solr-solrj-5.0.0.jar两个jar
solrj使用教程
solr-solrj-4.10.3.jar。
solrj的facet查询总结
Solrj 中文教程
solr-solrj-4.4.0.jar
solrj实现索引根据id进行更新,可以添加field、更新field、在原有多值field上增加索引。
solr-solrj-6.6.0.jar
solr详细配置教程与solrj的使用
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文
solrj是一个java客户端访问solr,它定义了一个java接口来添加、修改、查询solr的索引。本页描述的solrj使用Solr释放包括1.4 x版本
java大数据开发中solrJ所需要的核心包.................