zoukankan      html  css  js  c++  java
  • Solr&SpringDataSolr

    @

    什么是Solr

    直接使用sql搜索存在的问题

    大多数搜索引擎应用都必须具有某种搜索功能
    搜索功能往往是巨大的资源消耗
    它们由于沉重的数据库加载而拖垮你的应用的性能
    所有我们一般在做搜索的时候 会把它单独转移到一个外部的搜索服务器当中进行
    Apache Solr是一个流行的开源搜索服务器

    Apache Solr

    Solr是一个开源搜索平台,用于构建搜索应用程序。
    是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口
    它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。
    用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

    为什么选择Solr ?

    第一点原因:来自SQL数据库在性能上缺乏亮点。基本上,你需要在你的查询中使用JOIN操作。
    第二点原因是文档的天然数据特性松散的文本文件,这种查询都是需要使用LIKE。然而joins和likes都是性能杀手,在目前的数据库引擎中是不方便的。
    solr底层采用的是倒排索引。这种数据结构类似与美化过的词典

    Solr 关键特性

    1.基于标准的开放接口:Solr搜索服务器支持通过XML、JSON和HTTP查询和获取结果。
    2.易管理:Solr可以通过HTML页面管理,Solr配置通过XML完成。
    3.可伸缩性:能够有效地复制到另外一个Solr搜索服务器。
    4.灵活的插件体系:新功能能够以插件的形式方便的添加到Solr服务器上。
    5.强大的数据导入功能:数据库和其他结构化数据源现在都可以导入、映射和转化。

    Solr安装

    链接: https://pan.baidu.com/s/1eaqzJrotRog73PCWjGBldw 提取码: 1tij

    1. 上传安装包
      在这里插入图片描述

    2. 对以上内容进行解压
      解压tomcat
      tar -zxvf apache-tomcat-8.5.32.tar.gz
      mv apache-tomcat-8.5.32 tomcat
      解压solr
      tar -zxvf solr-4.10.3.tar
      解压IK
      unzip IKAnalyzer.zip
      在这里插入图片描述

    3. 复制solr.war到tomcat/webapp下
      cd /usr/local/solr/solr-4.10.3/example/webapps/
      cp solr.war /usr/local/solr/tomcat/webapps/
      在这里插入图片描述

    4. 启动tomcat让solr.war自动解压
      /usr/local/solr/tomcat/bin/startup.sh

    5. 关闭tomcat
      /usr/local/solr/tomcat/bin/shutdown.sh

    6. 进入到webapps删除solr.war包
      cd /usr/local/solr/tomcat/webapps/
      rm -rf solr.war

    7. 将solr-4.10.3/example/lib/ext/目录下的所有jar包拷贝到/usr/local/solr/tomcat/webapps/solr/WEB-INF/lib目录中
      cd /usr/local/solr/solr-4.10.3/example/lib/ext
      cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib

    8. 将solr-4.10.3/example/目录下的solr文件夹复制到/usr/local/solr/目录下并且重命名为solrhome
      cd /usr/local/solr/solr-4.10.3/example/
      cp -r solr /usr/local/solr/
      cd /usr/local/solr
      mv solr solrhome

    9. 配置tomcat/webapps/solr/WEB-INF/web.xml家的位置
      cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/
      vim web.xml
      添加solrhome
      在这里插入图片描述

    10. 启动Tomcat
      在这里插入图片描述

    中文分词器

    IK Analyzer简介

    IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包。
    它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件
    IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化。
    作用: 有中文语义分析的效果, 对中文分词效果好.

    安装

    1. 把IKAnalyzer2012FF_u1.jar 添加到 solr 工程的 lib 目录下
      cd /usr/local/solr/IKAnalyzer/
      cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

    2. 创建WEB-INF/classes文件夹
      cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/
      mkdir classes

    3. 把扩展词典、停用词词典、配置文件放到 solr 工程的 WEB-INF/classes 目录下
      cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
      cp /usr/local/solr/IKAnalyzer/IKAnalyzer.cfg.xml ./
      cp /usr/local/solr/IKAnalyzer/ext_stopword.dic ./
      mv ext_stopword.dic stopword.dic

    4. 修改IKAnalyzer.cfg.xml配置文件

    在这里插入图片描述

    blog.csdnimg.cn/20200808150618399.png)
    stopword.dic已经有了,ext.dic还没有
    创建ext.dic:touch ext.dic
    stopword.dic-停止词典
    切分词的时候, 凡是出现在停止词典中的词都会被过滤掉.
    ext.dic-扩展词典
    凡是专有名词都会放到这里, 如果自然语义中不是一个词, 放到这里后solr
    切分词的时候就会切分成一个词.
    5. 配置分词器
    修改 Solrhome 的 schema.xml 文件
    cd /usr/local/solr/solrhome/collection1/conf
    vim schema.xml
    在最后添加

    <fieldType name="text_ik" class="solr.TextField">
         <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
    

    在这里插入图片描述
    自定义域名使用自己创建的分词器

    <field name="content_ik" type="text_ik" indexed="true" stored="true"/>
    

    在这里插入图片描述
    配置完毕后重启tomcat
    在这里插入图片描述

    域的分类

    域的配置文件
    cd /usr/local/solr/solrhome/collection1/conf/
    vim schema.xml

    什么是域

    域相当于数据库的表字段,用户存放数据
    用户根据业务需要去定义相关的Field(域)

    域的分类:

    1. field普通域
      大多数情况都可以用这个域来完成, 主要定义了域名和域的类型.
    2. copyField复制域
      复制域中有source叫做源域, dest代表目标域,
      在维护数据的时候, 源域中的内容会复制到目标域中一份,
      从目标域中搜索, 就相当于从多个源域中搜索一样
    3. dynamicField动态域
      solr中域名要先定义后使用, 没有定义就使用会报错,
      如果没有定义的域名想使用可以模糊匹配动态域, 让没有定义的域名可以使用.
    4. uniqueKey主键域
      在添加数据的时候必须有主键域, 没有会报错, 这个不用添加也不用修改, 就使用这个默认的域名id就可以.

    域的常用属性

    name:指定域的名称
    type:指定域的类型
    indexed:是否索引
    stored:是否存储
    required:是否必须
    multiValued:是否多值
    

    想要往solr存储数据,就把相关字段写进域中

    普通域

    <field name="item_goodsid" type="long" indexed="true" stored="true"/>
    <field name="item_title" type="text_ik" indexed="true" stored="true"/>
    <field name="item_price" type="double" indexed="true" stored="true"/>
    <field name="item_image" type="string" indexed="false" stored="true" />
    <field name="item_category" type="string" indexed="true" stored="true" />
    <field name="item_seller" type="text_ik" indexed="true" stored="true" />
    <field name="item_brand" type="string" indexed="true" stored="true" />
    <field name="item_updatetime" type="date" indexed="true" stored="true" />
    

    复制域

    <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    <copyField source="item_title" dest="item_keywords"/>
    <copyField source="item_category" dest="item_keywords"/>
    <copyField source="item_seller" dest="item_keywords"/>
    <copyField source="item_brand" dest="item_keywords"/>
    

    动态域

    <dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />
    

    solrj

    概述

    solrJ是solr官方推出的客户端工具包, 将solrj的jar包放到我们项目中,
    我们调用solrj中的api来远程给solr服务器发送命令, solr服务器就可以完成对索引库的操作(添加修改删除查询)

    操作步骤

    1. 创建一个普通的Java工程
      添加soloJ相关Jar包
      在这里插入图片描述
      在这里插入图片描述
      操作
    2. 添加或者修改
      修改时, 会把以前的内容删除, 然后再添加
      在这里插入图片描述
    public class test {
        @Test
        public void testIndexCreateAndUpdate() throws Exception {
            /**
             * 创建和solr服务器连接
             * http://192.168.0.108:8080/solr是连接的默认实例也就是collection1实例
             * http://192.168.0.108:8080/solr/collection2实例
             */
            SolrServer solrServer = new HttpSolrServer("http://192.168.0.108:8080/solr");
            //创建文档对象
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id", "002");
            doc.addField("title", "后裔");
            doc.addField("price", "250");
            //添加或者修改
            solrServer.add(doc);
            //提交
            solrServer.commit();
        }
    }
    
    
    1. 查询所有
      在这里插入图片描述
       @Test
        public void testIndexSearch() throws Exception {
            SolrServer solrServer = new HttpSolrServer("http://192.168.0.108:8080/solr");
            //创建查询对象
            SolrQuery query = new SolrQuery();
            //设置查询条件
            query.setQuery("*:*");
            //查询并返回响应
            QueryResponse queryResponse = solrServer.query(query);
            //从响应中获取结果集
            SolrDocumentList results = queryResponse.getResults();
            System.out.println("count=" + results.getNumFound());
            for (SolrDocument result : results) {
                System.out.println("id=" + result.get("id"));
                System.out.println("title=" + result.get("title"));
            }
        }
    
    1. 删除
      在这里插入图片描述
     @Test
        public void testIndexDelete() throws Exception {
            SolrServer solrServer = new HttpSolrServer("http://192.168.0.108:8080/solr");
            //单个删除
            //solrServer.deleteById("001");
            //删除所有
            solrServer.deleteByQuery("*:*");
            //提交
            solrServer.commit();
        }
    

    Spring Data Solr

    Spring Data Solr简介

    Spring Data Solr就是为了方便Solr的开发所研制的一个框架
    其底层是对SolrJ(官方API)的封装

    Spring Data Solr入门

    1. 创建maven工程SpringSolrProject jar项目
      在这里插入图片描述
    2. pom.xml中引入依赖
    <properties>
            <spring.version>5.1.7.RELEASE</spring.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-solr</artifactId>
                <version>1.5.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.1.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            </dependency>
              <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
            </dependency>
        </dependencies>
    
    1. 在src/main/resources下创建
      applicationContext-solr.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:solr="http://www.springframework.org/schema/data/solr"
           xsi:schemaLocation="http://www.springframework.org/schema/data/solr
      		http://www.springframework.org/schema/data/solr/spring-solr-1.0.xsd
    		http://www.springframework.org/schema/beans
    		http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context
    		http://www.springframework.org/schema/context/spring-context.xsd">
        <!-- solr服务器地址 -->
        <solr:solr-server id="solrServer" url="http://192.168.0.108:8080/solr" />
    
        <!-- solr模板,使用solr模板可对索引库进行CRUD的操作 -->
        <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
            <constructor-arg ref="solrServer" />
        </bean>
    </beans>
    
    
    1. 创建 cn.fmjava.pojo 包 引入 Item实体类
    package com.fmjava.pojo;
    
    import lombok.Data;
    import org.apache.solr.client.solrj.beans.Field;
    
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.util.Date;
    
    @Data
    public class Item implements Serializable {
    
        /**
         * 商品id,同时也是商品编号
         */
        @Field
        private Long id;
    
        /**
         * 商品标题
         */
        @Field("item_title")
        private String title;
    
        /**
         * 商品卖点
         */
        private String sellPoint;
    
        /**
         * 商品价格,单位为:元
         */
        @Field("item_price")
        private BigDecimal price;
    
        private Integer stockCount;
    
        /**
         * 库存数量
         */
        private Integer num;
    
        /**
         * 商品条形码
         */
        private String barcode;
    
        /**
         * 商品图片
         */
        @Field("item_image")
        private String image;
    
        /**
         * 所属类目,叶子类目
         */
        private Long categoryid;
    
        /**
         * 商品状态,1-正常,2-下架,3-删除
         */
        private String status;
    
        /**
         * 创建时间
         */
        private Date createTime;
    
        /**
         * 更新时间
         */
        private Date updateTime;
    
        private String itemSn;
    
        private BigDecimal costPirce;
    
        private BigDecimal marketPrice;
    
        private String isDefault;
    
        @Field("item_goodsid")
        private Long goodsId;
    
        private String sellerId;
    
        private String cartThumbnail;
    
        @Field("item_category")
        private String category;
    
        @Field("item_brand")
        private String brand;
    
        private String spec;
    
        @Field("item_seller")
        private String seller;
    
        private static final long serialVersionUID = 1L;
    }
    
    1. 配置业务域
      修改solrhome的schema.xml 文件 设置业务系统 Field
    <field name="item_goodsid" type="long" indexed="true" stored="true"/>
    	<field name="item_title" type="text_ik" indexed="true" stored="true"/>
    	<field name="item_price" type="double" indexed="true" stored="true"/>
    	<field name="item_image" type="string" indexed="false" stored="true" />
    	<field name="item_category" type="string" indexed="true" stored="true" />
    	<field name="item_seller" type="text_ik" indexed="true" stored="true" />
    	<field name="item_brand" type="string" indexed="true" stored="true" />
    <field name="item_updatetime" type="date" indexed="true" stored="true" />
    

    复制域的作用在于将某一个Field中的数据复制到另一个域中

    <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    <copyField source="item_title" dest="item_keywords"/>
    <copyField source="item_category" dest="item_keywords"/>
    <copyField source="item_seller" dest="item_keywords"/>
    <copyField source="item_brand" dest="item_keywords"/>
    

    动态扩充字段时,我们需要使用动态域

    <dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />	
    

    配置
    cd /usr/local/solr/solrhome/collection1/conf
    vim schema.xml
    在这里插入图片描述
    重启tomcat
    /usr/local/solr/tomcat/bin/shutdown.sh
    /usr/local/solr/tomcat/bin/startup.sh

    1. 创建测试类
      添加
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath: applicationContext-solr.xml"})
    public class TestIndexManager{
        @Autowired
        private SolrTemplate solrTemplate;
        @Test
        public void testIndexCreateAndUpdate(){
            ArrayList<Item> itemList = new ArrayList<>();
            for (long i = 1; i < 100; i++) {
                Item item = new Item();
                item.setId(i);
                item.setTitle("鲁班"+i);
                item.setCategory("射手");
                item.setPrice(new BigDecimal("100"+i));
                item.setBrand("王者");
                itemList.add(item);
            }
            //保存
            solrTemplate.saveBeans(itemList);
            solrTemplate.commit();;
        }
    }
    
    

    删除

     @Test
        public void testIndexDelte() {
            //根据主键域id删除
            //solrTemplate.deleteById("1");
    
            //创建查询对象
            Query query = new SimpleQuery("*:*");
            //根据查询条件删除
            solrTemplate.delete(query);
            //提交
            solrTemplate.commit();
        }
    

    分页多条件查询

     @Test
        public void testSearch() {
            //创建查询对象
            //Query query = new SimpleQuery("*:*");
            //创建查询对象
            Query query = new SimpleQuery();
            //创建查询条件对象, 注意这里的Criteria对象和mybatis中的那个不是同一个, 只是同名而已
            Criteria criteria = new Criteria("item_title").contains("鲁班");
            //查询对象中放入查询条件
            query.addCriteria(criteria);
            //从第几条开始查询
            query.setOffset(11);
            //设置每页查询多少条数据
            query.setRows(20);
            //查询并返回结果
            ScoredPage<Item> items = solrTemplate.queryForPage(query, Item.class);
            //总页数
            int totalPages = items.getTotalPages();
            //查询到的总记录数
            long totalElements = items.getTotalElements();
            //查询到的数据集合
            List<Item> content = items.getContent();
            //每页有多少条数据
            int numberOfElements = items.getNumberOfElements();
            System.out.println("==========");
            System.out.println(content);
        }
    

    SSM整合
    sql语句

    /*
     Navicat Premium Data Transfer
    
     Source Server         : 本地mysql3306
     Source Server Type    : MySQL
     Source Server Version : 80016
     Source Host           : localhost:3306
     Source Schema         : fmstore
    
     Target Server Type    : MySQL
     Target Server Version : 80016
     File Encoding         : 65001
    
     Date: 09/08/2020 12:17:39
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for tb_item
    -- ----------------------------
    DROP TABLE IF EXISTS `tb_item`;
    CREATE TABLE `tb_item`  (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '商品id,同时也是商品编号',
      `title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品标题',
      `sell_point` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品卖点',
      `price` decimal(20, 2) NOT NULL COMMENT '商品价格,单位为:元',
      `stock_count` int(10) NULL DEFAULT NULL,
      `num` int(10) NOT NULL COMMENT '库存数量',
      `barcode` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品条形码',
      `image` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品图片',
      `categoryId` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
      `status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品状态,1-正常,2-下架,3-删除',
      `create_time` datetime(0) NOT NULL COMMENT '创建时间',
      `update_time` datetime(0) NOT NULL COMMENT '更新时间',
      `item_sn` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `cost_pirce` decimal(10, 2) NULL DEFAULT NULL,
      `market_price` decimal(10, 2) NULL DEFAULT NULL,
      `is_default` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `goods_id` bigint(20) NULL DEFAULT NULL,
      `seller_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `cart_thumbnail` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `category` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `brand` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `spec` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `seller` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `cid`(`categoryId`) USING BTREE,
      INDEX `status`(`status`) USING BTREE,
      INDEX `updated`(`update_time`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1369432 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品表' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of tb_item
    -- ----------------------------
    INSERT INTO `tb_item` VALUES (1369374, '荣耀V20 游戏手机 麒麟980芯片 魅眼全视屏 4800万深感相机 6GB+128GB 幻影蓝 移动联通电信4G全面屏手机', NULL, 2099.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/16446/33/13283/339849/5c9eca5bE06fce1b2/500f99a976998161.jpg', 5, '2', '2019-08-15 08:55:34', '2019-08-15 08:55:34', NULL, NULL, NULL, '0', 149187842867983, 'myxq', NULL, '数字杂志', '华为', '{"选择颜色":"秘境黑","选择版本":"6G+64G"}', 'myxq');
    INSERT INTO `tb_item` VALUES (1369375, '荣耀10青春版 幻彩渐变 2400万AI自拍 全网通版6GB+64GB 渐变红 移动联通电信4G全面屏手机 双卡双待', NULL, 1199.00, NULL, 9999, NULL, 'http://img12.360buyimg.com/n1/s450x450_jfs/t1/24961/31/15129/171030/5caee71eE1de3edd7/2e5e07e00b0e3b75.jpg', 5, '2', '2019-08-15 08:55:34', '2019-08-15 08:55:34', NULL, NULL, NULL, '0', 149187842867983, 'myxq', NULL, '数字杂志', '华为', '{"选择颜色":"秘境黑","选择版本":"8G+128G"}', 'myxq');
    INSERT INTO `tb_item` VALUES (1369376, 'fmjavaGoods 秘境黑 优惠套餐1 6G+64G', NULL, 2199.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t1/7757/6/16212/85710/5c77ab53Eed90536f/5fe95b5c4aba859a.jpg', 3, '2', '2019-08-15 14:23:43', '2019-08-15 14:23:43', NULL, NULL, NULL, '0', 149187842867984, 'fmjava', NULL, '电子书', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369377, 'fmjavaGoods 星云紫 优惠套餐1 6G+64G', NULL, 3199.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/jfs/t1/65359/29/6670/189455/5d4d4484E882f4f4f/93d99649e15bdbaf.jpg', 3, '2', '2019-08-15 14:23:43', '2019-08-15 14:23:43', NULL, NULL, NULL, '0', 149187842867984, 'fmjava', NULL, '电子书', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369378, 'fmjavaGoods 秘境黑 优惠套餐1 6G+64G', NULL, 4199.00, NULL, 9999, NULL, 'http://img12.360buyimg.com/n1/s450x450_jfs/t30031/152/1332312785/300863/cdf3a03d/5cdd233eN69626d85.jpg', 3, '2', '2019-08-15 14:23:50', '2019-08-15 14:23:50', NULL, NULL, NULL, '0', 149187842867985, 'fmjava', NULL, '电子书', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369379, 'fmjavaGoods 星云紫 优惠套餐1 6G+64G', NULL, 5199.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/19883/39/13305/185344/5c9eca88Ee1bfa73d/23314446540561dd.jpg', 3, '2', '2019-08-15 14:23:50', '2019-08-15 14:23:50', NULL, NULL, NULL, '0', 149187842867985, 'fmjava', NULL, '电子书', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369380, 'fmjavaGoods 秘境黑 优惠套餐1 6G+64G', NULL, 1099.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/21483/28/13292/135360/5c9eca88E2af33893/1f8964d2828a078a.jpg', 3, '2', '2019-08-15 14:24:21', '2019-08-15 14:24:21', NULL, NULL, NULL, '0', 149187842867986, 'fmjava', NULL, '电子书', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369381, 'fmjavaGoods 星云紫 优惠套餐1 6G+64G', NULL, 1193.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t1/7757/6/16212/85710/5c77ab53Eed90536f/5fe95b5c4aba859a.jpg', 3, '2', '2019-08-15 14:24:21', '2019-08-15 14:24:21', NULL, NULL, NULL, '0', 149187842867986, 'fmjava', NULL, '电子书', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369382, 'newGoodsName 秘境黑 优惠套餐1 6G+64G', NULL, 1159.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/19883/39/13305/185344/5c9eca88Ee1bfa73d/23314446540561dd.jpg', 3, '2', '2019-08-16 12:11:06', '2019-08-16 12:11:06', NULL, NULL, NULL, '0', 149187842867987, 'fmjava', NULL, '电子书', '华为', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369383, 'newGoodsName 秘境黑 优惠套餐1 8G+128G', NULL, 1190.00, NULL, 9999, NULL, 'http://img12.360buyimg.com/n1/s450x450_jfs/t1/24961/31/15129/171030/5caee71eE1de3edd7/2e5e07e00b0e3b75.jpg', 3, '2', '2019-08-16 12:11:06', '2019-08-16 12:11:06', NULL, NULL, NULL, '0', 149187842867987, 'fmjava', NULL, '电子书', '华为', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369384, 'newGoodsName 星云紫 优惠套餐1 6G+64G', NULL, 1100.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/19883/39/13305/185344/5c9eca88Ee1bfa73d/23314446540561dd.jpg', 3, '2', '2019-08-16 12:11:06', '2019-08-16 12:11:06', NULL, NULL, NULL, '0', 149187842867987, 'fmjava', NULL, '电子书', '华为', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369385, 'newGoodsName 星云紫 优惠套餐1 8G+128G', NULL, 1199.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t1/7757/6/16212/85710/5c77ab53Eed90536f/5fe95b5c4aba859a.jpg', 3, '2', '2019-08-16 12:11:06', '2019-08-16 12:11:06', NULL, NULL, NULL, '0', 149187842867987, 'fmjava', NULL, '电子书', '华为', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369386, 'new商品名称1234555 秘境黑 6G+64G', NULL, 1999.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/19883/39/13305/185344/5c9eca88Ee1bfa73d/23314446540561dd.jpg', 3, '2', '2019-08-16 14:03:40', '2019-08-16 14:03:40', NULL, NULL, NULL, '0', 149187842867982, 'fmjava', NULL, '电子书', '华为', '{"选择颜色":"秘境黑","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369387, 'Redmi Note7秘境黑优惠套餐16G+64G', NULL, 100.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369388, 'Redmi Note7秘境黑优惠套餐18G+128G', NULL, 200.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369389, 'Redmi Note7秘境黑优惠套餐18G+256G', NULL, 300.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"8G+256G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369390, 'Redmi Note7星云紫优惠套餐16G+64G', NULL, 400.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369391, 'Redmi Note7星云紫优惠套餐18G+128G', NULL, 500.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369392, 'Redmi Note7星云紫优惠套餐18G+256G', NULL, 600.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"8G+256G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369393, 'Redmi Note7晨曦白优惠套餐16G+64G', NULL, 700.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369394, 'Redmi Note7晨曦白优惠套餐18G+128G', NULL, 800.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369395, 'Redmi Note7晨曦白优惠套餐18G+256G', NULL, 100.00, NULL, 9999, NULL, 'http://img10.360buyimg.com/n1/s450x450_jfs/t18946/116/1905361825/73754/a4e6caf5/5adfe5f6Nbe6097b7.jpg', 560, '2', '2019-08-22 05:53:13', '2019-08-22 05:53:13', NULL, NULL, NULL, '0', 149187842867988, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","套餐":"优惠套餐1","选择版本":"8G+256G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369396, '小米6X晨曦白优惠套餐16G+64G', NULL, 1100.00, NULL, 9999, NULL, 'http://img13.360buyimg.com//n0/jfs/t1/15767/33/5307/92363/5c3c0429E4490d584/6945442da40a809a.jpg', 560, '2', '2019-08-22 05:56:00', '2019-08-22 05:56:00', NULL, NULL, NULL, '0', 149187842867989, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369397, '小米6X晨曦白优惠套餐18G+128G', NULL, 2200.00, NULL, 9999, NULL, 'http://img13.360buyimg.com//n0/jfs/t1/15767/33/5307/92363/5c3c0429E4490d584/6945442da40a809a.jpg', 560, '2', '2019-08-22 05:56:00', '2019-08-22 05:56:00', NULL, NULL, NULL, '0', 149187842867989, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369398, '小米6X星云紫优惠套餐16G+64G', NULL, 3300.00, NULL, 9999, NULL, 'http://img13.360buyimg.com//n0/jfs/t1/15767/33/5307/92363/5c3c0429E4490d584/6945442da40a809a.jpg', 560, '2', '2019-08-22 05:56:00', '2019-08-22 05:56:00', NULL, NULL, NULL, '0', 149187842867989, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369399, '小米6X星云紫优惠套餐18G+128G', NULL, 4400.00, NULL, 9999, NULL, 'http://img13.360buyimg.com//n0/jfs/t1/15767/33/5307/92363/5c3c0429E4490d584/6945442da40a809a.jpg', 560, '2', '2019-08-22 05:56:00', '2019-08-22 05:56:00', NULL, NULL, NULL, '0', 149187842867989, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369400, '小米6X秘境黑优惠套餐16G+64G', NULL, 1100.00, NULL, 9999, NULL, 'http://img13.360buyimg.com//n0/jfs/t1/15767/33/5307/92363/5c3c0429E4490d584/6945442da40a809a.jpg', 560, '2', '2019-08-22 05:56:00', '2019-08-22 05:56:00', NULL, NULL, NULL, '0', 149187842867989, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369401, '小米6X秘境黑优惠套餐18G+128G', NULL, 2000.00, NULL, 9999, NULL, 'http://img13.360buyimg.com//n0/jfs/t1/15767/33/5307/92363/5c3c0429E4490d584/6945442da40a809a.jpg', 560, '2', '2019-08-22 05:56:00', '2019-08-22 05:56:00', NULL, NULL, NULL, '0', 149187842867989, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369402, '小米手机秘境黑6G+64G', NULL, 1000.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369403, '小米手机秘境黑8G+128G', NULL, 2000.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369404, '小米手机秘境黑8G+256G', NULL, 3000.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"秘境黑","选择版本":"8G+256G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369405, '小米手机星云紫6G+64G', NULL, 4000.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369406, '小米手机星云紫8G+128G', NULL, 2000.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369407, '小米手机星云紫8G+256G', NULL, 1010.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"星云紫","选择版本":"8G+256G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369408, '小米手机晨曦白6G+64G', NULL, 1011.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369409, '小米手机晨曦白8G+128G', NULL, 1021.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, 'fmjava', NULL, '手机', '小米', '{"选择颜色":"晨曦白","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369410, '小米手机晨曦白8G+256G', NULL, 1100.00, NULL, 9999, NULL, 'http://img13.360buyimg.com/n1/s450x450_jfs/t1/59999/2/7728/257703/5d5a6f5cE5a544acc/04d909d25f598c46.jpg', 560, '2', '2019-08-22 06:00:35', '2019-08-22 06:00:35', NULL, NULL, NULL, '0', 149187842867990, NULL, NULL, '手机', '小米', '{"选择颜色":"晨曦白","选择版本":"8G+256G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369411, '红米Redmi秘境黑优惠套餐16G+64G', NULL, 1001.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369412, '红米Redmi秘境黑优惠套餐26G+64G', NULL, 2001.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐2","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369413, '红米Redmi秘境黑优惠套餐18G+128G', NULL, 1003.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369414, '红米Redmi秘境黑优惠套餐28G+128G', NULL, 1006.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐2","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369415, '红米Redmi星云紫优惠套餐16G+64G', NULL, 1009.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369416, '红米Redmi星云紫优惠套餐26G+64G', NULL, 1001.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐2","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369417, '红米Redmi星云紫优惠套餐18G+128G', NULL, 1005.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369418, '红米Redmi星云紫优惠套餐28G+128G', NULL, 1005.00, NULL, 9999, NULL, 'http://img11.360buyimg.com/n1/s450x450_jfs/t1/61684/4/4661/81708/5d2da5c4E00d2a400/0a900b5f1134354b.jpg', 560, '2', '2019-08-22 06:09:55', '2019-08-22 06:09:55', NULL, NULL, NULL, '0', 149187842867991, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐2","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369419, '小米cc9手机秘境黑优惠套餐16G+64G', NULL, 1001.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369420, '小米cc9手机秘境黑优惠套餐26G+64G', NULL, 1002.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐2","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369421, '小米cc9手机秘境黑优惠套餐18G+128G', NULL, 2001.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369422, '小米cc9手机秘境黑优惠套餐28G+128G', NULL, 2002.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"秘境黑","套餐":"优惠套餐2","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369423, '小米cc9手机星云紫优惠套餐16G+64G', NULL, 2004.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369424, '小米cc9手机星云紫优惠套餐26G+64G', NULL, 2006.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐2","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369425, '小米cc9手机星云紫优惠套餐18G+128G', NULL, 2007.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐1","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369426, '小米cc9手机星云紫优惠套餐28G+128G', NULL, 2008.00, NULL, 9999, NULL, 'http://img14.360buyimg.com//n0/jfs/t1/74925/10/7096/531126/5d525301E01e07993/3ad4b1cd1b1c4929.png', 560, '2', '2019-08-22 06:14:19', '2019-08-22 06:14:19', NULL, NULL, NULL, '0', 149187842867992, NULL, NULL, '手机', '小米', '{"选择颜色":"星云紫","套餐":"优惠套餐2","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369427, 'Spring秘境黑6G+64G', NULL, 10.00, NULL, 9999, NULL, 'http://192.168.1.88/group1/M00/00/01/wKgBWF1g4_KATylRAAFyVK2N7Ig849.jpg', 5, '2', '2019-08-24 07:15:27', '2019-08-24 07:15:27', NULL, NULL, NULL, '0', 149187842867993, 'myxq', NULL, '数字杂志', '联想123456', '{"选择颜色":"秘境黑","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369428, 'Spring星云紫6G+64G', NULL, 10.00, NULL, 9999, NULL, 'http://192.168.1.88/group1/M00/00/01/wKgBWF1g4_KATylRAAFyVK2N7Ig849.jpg', 5, '2', '2019-08-24 07:15:27', '2019-08-24 07:15:27', NULL, NULL, NULL, '0', 149187842867993, 'myxq', NULL, '数字杂志', '联想123456', '{"选择颜色":"星云紫","选择版本":"6G+64G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369429, 'Spring秘境黑8G+128G', NULL, 10.00, NULL, 9999, NULL, 'http://192.168.1.88/group1/M00/00/01/wKgBWF1g4_KATylRAAFyVK2N7Ig849.jpg', 5, '2', '2019-08-24 07:15:27', '2019-08-24 07:15:27', NULL, NULL, NULL, '0', 149187842867993, 'myxq', NULL, '数字杂志', '联想123456', '{"选择颜色":"秘境黑","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369430, 'Spring星云紫8G+128G', NULL, 10.00, NULL, 9999, NULL, 'http://192.168.1.88/group1/M00/00/01/wKgBWF1g4_KATylRAAFyVK2N7Ig849.jpg', 5, '2', '2019-08-24 07:15:27', '2019-08-24 07:15:27', NULL, NULL, NULL, '0', 149187842867993, 'myxq', NULL, '数字杂志', '联想123456', '{"选择颜色":"星云紫","选择版本":"8G+128G"}', '上海*******有限责任公司');
    INSERT INTO `tb_item` VALUES (1369431, '斗罗大陆s秘境黑6G+64G', NULL, 1299.00, NULL, 9999, NULL, 'http://192.168.0.108/group1/M00/00/00/wKgAbF8qsqmAZ_2RAAkSYBUpASo53.jpeg', 3, '2', '2020-08-06 08:09:16', '2020-08-06 08:09:16', NULL, NULL, NULL, '0', 149187842867997, NULL, NULL, '电子书', '小米', '{"选择颜色":"秘境黑","选择版本":"6G+64G"}', 'joker');
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    

    把库存数据表数据保存到索引库

    1. 添加mybatis依赖&SpringDatasolr依赖
      <!-- solr -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-solr</artifactId>
                <version>1.5.5.RELEASE</version>
            </dependency>
    
    1. 在Pojo类当中添加注解
    @Data
    public class Item implements Serializable {
        /**
         * 商品id,同时也是商品编号
         */
        @Field
        private Long id;
    
        /**
         * 商品标题
         */
        @Field("item_title")
        private String title;
    
        /**
         * 商品卖点
         */
        private String sellPoint;
    
        /**
         * 商品价格,单位为:元
         */
        @Field("item_price")
        private BigDecimal price;
    
        private Integer stockCount;
    
        /**
         * 库存数量
         */
        private Integer num;
    
        /**
         * 商品条形码
         */
        private String barcode;
    
        /**
         * 商品图片
         */
        @Field("item_image")
        private String image;
    
        /**
         * 所属类目,叶子类目
         */
        private Long categoryid;
    
        /**
         * 商品状态,1-正常,2-下架,3-删除
         */
        private String status;
    
        /**
         * 创建时间
         */
        private Date createTime;
    
        /**
         * 更新时间
         */
        @Field("item_updatetime")
        private Date updateTime;
    
        private String itemSn;
    
        private BigDecimal costPirce;
    
        private BigDecimal marketPrice;
    
        private String isDefault;
    
        @Field("item_goodsid")
        private Long goodsId;
    
        private String sellerId;
    
        private String cartThumbnail;
    
        @Field("item_category")
        private String category;
    
        @Field("item_brand")
        private String brand;
    
        private String spec;
    
        @Field("item_seller")
        private String seller;
    
        @Dynamic
        @Field("item_spec_*")
        private Map<String,String> specMap;
    
        public Map<String, String> getSpecMap() {
            return specMap;
        }
    
        public void setSpecMap(Map<String, String> specMap) {
            this.specMap = specMap;
        }
        private static final long serialVersionUID = 1L;
    
    }
    
    1. 在resources目录下创建配置文件
      applicationContext-solr.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:solr="http://www.springframework.org/schema/data/solr"
    	xsi:schemaLocation="http://www.springframework.org/schema/data/solr 
      		http://www.springframework.org/schema/data/solr/spring-solr-1.0.xsd
    		http://www.springframework.org/schema/beans 
    		http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context 
    		http://www.springframework.org/schema/context/spring-context.xsd">
    	
    	<!-- solr服务器地址 -->
    	<solr:solr-server id="solrServer" url="http://192.168.0.108:8080/solr" />
       
    	<!-- solr模板,使用solr模板可对索引库进行CRUD的操作 -->
    	<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
    		<constructor-arg ref="solrServer" />
    	</bean>
    </beans>
    

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    	
      <context:component-scan base-package="com.fmjava.core.util"></context:component-scan>
       
    </beans>
    
    1. 创建类SolrUtil ,实现商品数据的查询(已审核商品)
    @Component
    public class DataImportToSolr {
        @Autowired
        private SolrTemplate solrTemplate;
        @Autowired
        private ItemDao itemDao;
        public void importItemDataToSolr() {
            ItemQuery query = new ItemQuery();
            ItemQuery.Criteria criteria = query.createCriteria();
            criteria.andStatusEqualTo("2");
            List<Item> items = itemDao.selectByExample(query);
            if (items != null) {
                for (Item item : items) {
                    //获取规格json格式字符串
                    String specJsonStr = item.getSpec();
                    Map map = JSON.parseObject(specJsonStr, Map.class);
                    item.setSpecMap(map);
                }
                //保存
                solrTemplate.saveBeans(items);
                //提交
                solrTemplate.commit();
            }
        }
        public static void main(String[] args) {
            ApplicationContext contexnt =
                    new ClassPathXmlApplicationContext("classpath*:spring/applicationContext*.xml");
            DataImportToSolr bean = (DataImportToSolr)contexnt.getBean("dataImportToSolr");
            bean.importItemDataToSolr();
        }
    }
    
    

    测试运行
    在这里插入图片描述
    搜索高亮

     @Override
        public Map<String, Object> searchHight(Map paramMap) {
            //获取查询条件
            String keywords = String.valueOf(paramMap.get("keywords"));
            //当前页
            Integer pageNo = Integer.parseInt(String.valueOf(paramMap.get("pageNo")));
            //每页查询多少条数据
            Integer pageSize = Integer.parseInt(String.valueOf(paramMap.get("pageSize")));
            //创建高亮查询对象
            HighlightQuery query = new SimpleHighlightQuery();
            //创建高亮选项对象
            HighlightOptions highlightOptions = new HighlightOptions();
            //设置哪个域需要高亮显示
            highlightOptions.addField("item_title");
            //设置高亮前缀
            highlightOptions.setSimplePrefix("<em style="color:red">");
            //设置高亮后缀
            highlightOptions.setSimplePostfix("</em>");
            //将高亮选项加入到查询对象中
            query.setHighlightOptions(highlightOptions);
    
            //创建查询条件对象
            Criteria criteria = new Criteria("item_keywords").is(keywords);
            //将查询条件放入到查询对象当中
            query.addCriteria(criteria);
    
            //计算从第几条开始查
            if (pageNo == null || pageNo <= 0){
                pageNo = 1;
            }
            Integer start = (pageNo - 1) * pageSize;
            //设置从第几条开始查询
            query.setOffset(start);
            //设置每页查询多少条
            query.setRows(pageSize);
    
            //查询,并返回结果
            HighlightPage<Item> items = solrTemplate.queryForHighlightPage(query, Item.class);
            List<HighlightEntry<Item>> highlighted = items.getHighlighted();
    
    
            //定义存在高亮item集合
            List<Item> itemList = new ArrayList<>();
            //遍历高亮集合
            for (HighlightEntry<Item> itemHighlightEntry : highlighted) {
                //获取到不带高亮的实体对象
                Item item = itemHighlightEntry.getEntity();
                List<HighlightEntry.Highlight> highlights = itemHighlightEntry.getHighlights();
                if (highlights != null && highlights.size() > 0) {
                    //获取到高亮标题集合
                    List<String> highlightTitle = highlights.get(0).getSnipplets();
                    if (highlightTitle != null && highlightTitle.size() > 0) {
                        //终于获取到高亮的标题
                        String title = highlightTitle.get(0);
                        //使用高亮的内容替换不带高亮的标题
                        item.setTitle(title);
                    }
                }
                itemList.add(item);
            }
            Map<String, Object> resultMap = new HashMap<>();
            //查询到的结果集
            resultMap.put("rows",  itemList);
            //查询到的总页数
            resultMap.put("totalPages", items.getTotalPages());
            //查询到的总条数
            resultMap.put("total", items.getTotalElements());
            return resultMap;
        }
    
  • 相关阅读:
    JAVA for(i = 0; i<a.length; i++) 解析
    3.2.2多维数组 3.3 排序
    3.2数组
    字符串和数组
    2.7.3与程序转移有关的跳转语句
    2.7.2 循环语句
    读书共享 Primer Plus C-part 4
    Linux 批量修改文件名
    关于/usr/local/lib/libz.a(zutil.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC解决办法
    做一个有深度的程序猿
  • 原文地址:https://www.cnblogs.com/joker-dj/p/13467052.html
Copyright © 2011-2022 走看看