zoukankan      html  css  js  c++  java
  • Solr导入MySQL数据

    Solr导入MySQL数据

    1. 数据库准备

    1. 数据库需要开启远程访问权限

      mysql 5 或 mariadb方式

      grant all on *.* to 'root'@'%' identified by '你的密码';
      

      oracle mysql 8方式

      create user 'root'@'%' identified by '你的密码';
      
      grant all privileges on *.* to 'root'@'%';
      

    2. 设置表对应关系

    2.1 表结构

    一个核心对应一个数据库的表, 假如有一个商品表, 表结构如下:

    w3LFoV.png

    2.2 设置字段

    打开网页-进入Solr的页面, 设置字段对应关系如下

    • title text_ik
    • sellPoint text_ik
    • price plong
    • barcode string
    • image string
    • cid plong
    • status pint
    • created pdate
    • updated pdate

    w3LtQH.png

    2.3 Copy Field 副本字段

    查询时需要按字段查询,例如 title:电脑, 可以将多个字段的值合并到一个字段进行查询,默认查询字段 _text_

    titlesellPoint 复制到 _text_ 字段

    w3LsfS.png

    3. Data Import Handler 配置

    3.1 添加jar文件

    Data Import Handler 的 jar 文件存放在 solr目录/dist 目录下

    solr-dataimporthandler-8.1.1.jar
    solr-dataimporthandler-extras-8.1.1.jar
    

    复制这两个文件和 mysql 的 jar 文件到 solr目录/server/solr-webapp/webapp/WEB-INF/lib

    3.2 dih-config.xml

    配置mysql的连接及sql语句, 然后上传到solr目录/server/solr/pd/conf

    <dataConfig> 
    	<dataSource type="JdbcDataSource" 
    			driver="com.mysql.jdbc.Driver" 
    			url="jdbc:mysql://192.168.64.1:3306/pd_store"
    			user="root" 
    			password="123456"
    			batchSize="100"
    			autoCommit="false" /> 
        <!-- query属性为查询sql的语句, 这里为查询所有的商品 -->
    	<document name="item"> 
    		<entity name="item" pk="id" 
                 query="SELECT id,title,sell_point sellPoint,price,barcode,image,cid,`status`,created,updated FROM pd_item"
                 deltaQuery="SELECT id,title,sell_point sellPoint,price,barcode,image,cid,`status`,created,updated FROM pd_item WHERE updated &gt; date_add(str_to_date('${dih.last_index_time}','%Y-%m-%d %H:%i:%s'),interval 8 hour)" 
    			 transformer="RegexTransformer">
    		</entity> 
    	</document> 
    </dataConfig>
    

    3.3 solrconfig.xml 中添加 DIH 配置

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">  
        	<str name="config">dih-config.xml</str>  
        </lst>  
    </requestHandler>
    

    3.4 重启 solr

    cd /usr/local/solr-8.1.1
    
    bin/solr restart -force
    

    4. 导入数据

    重启 solr 后导入数据,确认导入的文档数量为 3160

    w8S1uF.png

    查询测试

    在复制字段 _text_ 中查找 电脑

    所有字段中包含电脑的会被查询出来

    查询

    在标题中查找 电脑

    标题中含有电脑的会查询出来

    查询

    用双引号查找完整词 "笔记本"

    如果不加双引号的话,则会进行分词,加上双引号以后就当成一个整体进行查询

    查询

    搜索 +lenovo +电脑

    代表的是选择Lenovo 并且是电脑类型

    查询

    搜索 +lenovo -电脑

    代表的是选择Lenovo 但是排除电脑

    查询

    统计 cid

    在统计数据的最下面可以显示记录条数

    查询

    查询

    查询

    查询

    价格范围

    Raw Query Parameters 输入框中填入以下内容:

    facet.range=price&facet.range.start=0&facet.range.end=10000&facet.range.gap=2000
    

    查询

    查询

    多字段统计

    Raw Query Parameters 输入框中填入以下内容:

    facet.pivot=cid,status
    

    查询

    查询

  • 相关阅读:
    kbmmw 5.14.00 发布
    关于C++ auto使用要注意的一点
    git设置socks5代理
    电子书分享网站
    spring cache相关
    intellij idea开启debug热加载/热部署
    git 多次commit合并成一次提交
    es feature一览
    数据中台
    Java Agent
  • 原文地址:https://www.cnblogs.com/zpKang/p/13641564.html
Copyright © 2011-2022 走看看