代码如下:
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;
相关推荐
1. **索引管理**:创建、更新和删除索引文档,使Java应用能够方便地将数据推送到Solr。 2. **查询操作**:执行各种查询,包括基本查询、复杂查询以及分页、排序等操作。 3. **结果处理**:获取查询结果,包括原始...
通过SolrJ可以方便地实现索引创建和文档查询的功能。上述示例代码展示了如何配置SolrServer连接、执行查询以及解析查询结果的过程。此外,通过对查询结果的分析,我们可以看到Solr在处理大量文本数据时的强大功能,...
首先,你需要通过Maven或Gradle等构建工具将SolrJ库添加到你的项目依赖中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.solr <artifactId>solr-solrj <version>8.x.x...
- **4.4 使用SolrJ创建索引**:介绍如何使用SolrJ创建和管理索引。 ##### 4.5 Solrj包的结构说明 - **4.5.1 CommonsHttpSolrServer**:通过HTTP协议与Solr交互的客户端。 - **4.5.2 Setting XMLResponseParser**:...
通过上述代码示例,我们可以看到SolrJ提供了非常灵活的方式来操作Solr索引库,无论是添加、删除还是查询文档都非常方便。这对于需要高效管理和检索大量文本数据的应用场景来说是非常有用的工具。
在Solr中,索引是存储和检索信息的基础,而Solrj库提供了一种方便的方式来与Solr服务器通信,执行如添加、删除和更新文档等操作。以下是对"UpdateSolrField.java"可能包含的代码及其相关知识点的详细解释: 1. **...
SolrJ是Apache Solr官方提供的Java客户端库,它使得在Java应用程序中与Solr服务器进行交互变得简单。Solr是流行的全文搜索引擎,提供高效、可扩展的搜索和分析功能。通过SolrJ,开发者可以方便地进行索引文档、查询...
2. **SolrJ**:Java客户端库,允许开发者通过代码与Solr服务器交互,执行索引操作和查询请求。 3. **命令行工具**:如`post.jar`,用于批量导入数据到Solr索引。 4. **API支持**:Solr提供了RESTful API,支持通过...
Solrj使得在Java应用程序中集成Solr变得简单,通过API可以方便地进行文档的添加、删除和更新操作。 案例分析部分通常会涵盖以下几个方面: 1. **部署与配置**:如何设置Solr服务器,包括下载、解压、启动和配置...
1. SolrJ维护索引:通过SolrJ客户端,可以方便地实现添加、删除和修改索引文档的Java代码。 2. SolrJ查询索引:同样,查询索引也可以通过SolrJ完成,将查询语句封装为Java对象,然后发送到Solr服务器获取结果。 综...
在"SolrJ"文件中,你将学习到如何使用SolrJ来创建索引,这通常涉及创建SolrServer对象、定义Document对象并将其添加到索引中。同时,你也会了解如何使用SolrJ进行删除操作,这可能包括删除单个文档或根据条件批量...
4. **创建索引**:利用SolrJ库,你可以编写Java代码来创建索引。这通常涉及连接到Solr服务器,创建索引文档,然后提交到服务器。 5. **执行查询**:同样使用SolrJ,可以编写查询语句,发送到Solr服务器,获取结果集...
更新SolrCore通常涉及到更改配置文件或添加/删除数据。Solr提供了动态schema更新功能,允许在运行时添加或修改字段定义。对于配置文件,可以通过停用核心,替换文件,然后重新加载核心来进行更新。也可以使用...
它提供了高效的全文搜索、高亮显示、拼写检查、分类、 faceting、实时添加删除索引等特性。在这个主题中,我们将探讨如何在Solr官方示例中添加新的项目,并实现发送索引的功能。 首先,我们需要了解Solr的基本架构...
在Java后台开发中,Solr通过SolrJ客户端库与Java应用进行交互,通过配置和编码实现数据索引、搜索等功能。 ### 1. Solr服务器搭建与配置 搭建Solr服务需要Java环境,推荐在Linux系统中使用Tomcat作为应用服务器进行...
本项目示例是针对Solr 5.5.4版本的一个实践应用,旨在帮助用户了解并掌握Solr的基本操作,包括对索引的增加、删除、修改和查询。 1. **Solr安装与配置**:首先,你需要下载Solr 5.5.4版本,并解压到本地文件系统。...
在Solr6版本中,为了更方便地进行客户端操作,通常会使用SolrJ库,这是一个Java客户端库,它允许Java开发者与Solr服务器进行交互,执行CRUD(创建、读取、更新、删除)操作以及复杂查询。本文将深入探讨Solr6工具类...
每个Solr实例都可以包含多个独立的核心,每个核心都有自己的配置文件和索引库。这种方式极大地提高了系统的灵活性和性能。 - **1.2.5 缓存** 为了加速搜索响应时间,Solr内置了多种缓存机制,如查询结果缓存、文档...
通过Solrj,开发者可以方便地在Java应用中集成Solr功能,包括文档的添加、删除、更新和查询。 通过以上内容,你可以掌握基于Lucene的全文检索程序开发,了解Solr的基本操作,并学会使用Solrj进行Java客户端编程。...