Mac环境下的solr+中文分词器配置(Springboot应用)

Mac环境下的solr+中文分词器配置

  1. 启动solr

    solr start
    

    服务启动后会提示Started Solr server on port 8983 (pid=1032). Happy searching!

    打开http://localhost:8983/即可访问solr控制台

  2. 创建新的core

    solr create -c collection
    

    创建完成后,可在这里选择到刚刚创建的core(core相当于数据库中的实例)

    image-20201204163637458

    并且在solr的安装目录下可以看到已经自动帮你创建好了对应的文件夹(这个文件夹中有我们配置solr的配置文件,后面需要修改)

    image-20201204165415697
  3. 配置field和中文分词器

    打开managed-schema,修改配置文件,配置完成后使用solr restart命令重启一下solr服务

    image-20201204165624725

    在之前添加对应的field,标签中的name对应springboot pojo类中的注解@Field后面的名字(下面有对应的pojo的代码)

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Solr managed schema - automatically generated - DO NOT EDIT -->
    <schema name="default-config" version="1.6">
      .....
      <!-- 配置中文分词器 -->
      <fieldType name="text_ik" class="solr.TextField">
    	  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
      </fieldType>
    	<!-- 下面的name对应springboot pojo类中的注解@Field -->
      <field name="item_title" type="text_ik" indexed="true" stored="true"/>
      <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
      <field name="item_price"  type="pdouble" indexed="true" stored="true"/>
      <field name="item_image" type="string" indexed="false" stored="true" />
      <field name="item_category_name" type="string" indexed="true" stored="true" />
      <field name="item_desc" type="text_ik" indexed="true" stored="true" />
      <field name="item_goodsid" type="text_ik" indexed="true" stored="true" />
      <field name="item_category" type="text_ik" indexed="true" stored="true" />
      <field name="item_brand" type="text_ik" indexed="true" stored="true" />
      <field name="item_seller" type="text_ik" 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_sell_point" dest="item_keywords"/>
      <copyField source="item_desc" dest="item_keywords"/>
    </schema>
    

    其中item_keywords是我们要配置的业务字段,比如我们想同时对商品的标题(item_title),卖点(item_sell_point),描述(item_desc)进行搜索的时候,我们就可以将这几个字段统一设成item_keywords,这样子我们搜索的时候只需要对item_keywords进行赋值,solr就会帮我们对标题,卖点,描述进行搜索。

    我对应的pojo类

    package com.online.shopping.pojo;
    
    public class TbItem implements Serializable {
        @Field
        private Long id;
    
        @Field("item_title") // 表示 持久化对象 的属性和solr业务字段的映射关系
        private String title;
    
        private String sellPoint;
    
        @Field("item_price")
        private Double price;
    
        private Integer stockCount;
    
        private Integer num;
    
        private String barcode;
    
        @Field("item_image")
        private String image;
    
        private Long categoryid;
    
        private String status;
    
        private Date createTime;
    
        private Date updateTime;
    
        private String itemSn;
    
        private Double costPirce;
    
        private Double 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;
    
        .....// 一些getter和setter
    }
    
  4. 同步数据库数据

    先在application.yml中配置solr服务

    server:
      port: 8817
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka
    spring:
      data:
        solr:
          host: http://127.0.0.1:8983/solr
    

    在对应微服务下,使用springboot的test类,导入数据库中某个表的数据(目前如果数据库中的数据更新,需要手动同步,先执行testRemove清空solr,再执行testImportMany导入)

    @SpringBootTest
    public class SolrTest {
    
      	@Autowired
      	private TbItemMapper itemMapper;
    
      	@Autowired
      	private SolrTemplate solrTemplate;
      
      	@Test
        public void testImportMany() {
            List<TbItem> list = itemMapper.selectByExample(null);
            solrTemplate.saveBeans("collection", list);  //批量保存
    
            solrTemplate.commit("collection");;
            System.out.println("操作完成");
        }
    
        @Test
        public void testRemove() {
            Query query = new SimpleQuery("*:*"); //全部清空solr
            solrTemplate.delete("collection", query);
            solrTemplate.commit("collection");;
            System.out.println("操作完成");
        }
    }
    
  5. 重启solr

    solr restart
    
  6. 测试

image-20201204171525229

修改q值测试

image-20201204171638980

成功!

课程简介这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。适用人群刚刚毕业的学生想提高职场竞争力想学从零开发SpringBoot项目想提升SpringBoot项目开发技术想学习SpringBoot项目架构技术想学习企业级项目开发技术就是想学习SpringBoot开发能学到什么从0开发一个类似企业级项目学会能做出市面上90%通用API快速增加1到2年实际开发经验刚毕业学完后能找到满意的工作已经工作学完后最高涨薪30%课程信息全课程目前是82章,155小时,每节视频都经过精心剪辑。在线学习分辨率最高1080P课程知识点1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制12~16章:搭建开发环境,快速入门SpringBoot框架17~20章:快速入门MySQL数据库21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置31~41章:实现歌单,歌单标签,音乐,列表分页,视频,评论,好友功能42~48章:阿里云OSS,话题,MyBatis-plus,应用监控49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索59~61章:商城,集成支付宝SDK,支付宝支付62~64章:常用哈希和加密算法,接口加密和签名65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS81~82章:增强和重构项目,课程总结,后续学习计划
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值