2.myql数据导入到solr,并建立solr索引(学习笔记)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 1.1     业务域名的配置1.1.1   需求要使用solr实现电商网站中商品搜索。电商中商品信息在mysql数据库中存储了,将mysql数据库中数据在solr中创建索引。需要在solr的schema.xml文件定义商品Field。1.1.2   定义步骤在schema.xml中配置域 商品id(pid)这是商品的主键,由于schema文件中已经有主键id了就不需要

1.1     业务域名的配置

1.1.1   需求

要使用solr实现电商网站中商品搜索。

电商中商品信息在mysql数据库中存储了,将mysql数据库中数据在solr中创建索引。

需要在solr的schema.xml文件定义商品Field。

1.1.2   定义步骤


在schema.xml中配置域

 

商品id(pid)

这是商品的主键,由于schema文件中已经有主键id了就不需要对它配置了

<field name="id"type="string" indexed="true" stored="true"required="true" multiValued="false"/>

 

商品名称:

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

 

商品分类id:

<field name="product_catalog"type="string" indexed="true" stored="true" />

 

商品分类名称:

<fieldname="product_catalog_name" type="string"indexed="true" stored="true" />

 

商品价格:

<field name="product_price"type="float" indexed="true" stored="true" />

 

商品描述:

<fieldname="product_description" type="text_ik"indexed="true" stored="false" />

 

商品图片:

<field name="product_pic"type="string" indexed="false" stored="true" />

 

<field name="product_keywords"type="text_ik" indexed="true" stored="false"multiValued="true"/>

<!--

使用复制域、将product_name和product_description

都复制到product_keywords,当搜索product_keywords的时候

-->

<copyFieldsource="product_name" dest="product_keywords"/>

<copyFieldsource="product_description" dest="product_keywords"/>

 

schema.xml中配置的域的内容如下:

<!-- 商品名称 -->

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

 

<!-- 商品分类id -->

<field name="product_catalog" type="string" indexed="true" stored="true" />

        

<!-- 商品分类名称 -->

<field name="product_catalog_name" type="string" indexed="true" stored="true" />

        

<!-- 商品价格 -->

<field name="product_price" type="float" indexed="true" stored="true" />

        

<!-- 商品描述 -->

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

        

<!-- 商品图片 -->

<field name="product_pic" type="string" indexed="false" stored="true" />

 

<field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

         <!--

         使用复制域、将product_name和product_description

         都复制到product_keywords,当搜索product_keywords的时候

         -->

         <copyField source="product_name" dest="product_keywords"/>

         <copyField source="product_description" dest="product_keywords"/>

 

1.2     DataimportHandler

DataimportHandler,它可以把数据从关系数据库中查询出来,然后倒入到索引库中。

1.2.1   添加jar包

l  Dataimport的jar

从D:\installed\solr-4.10.3\dist目录下拷贝solr-dataimporthandler-4.10.3.jar和solr-dataimporthandler-extras-4.10.3.jar,复制到D:\installed\solr-resources\contrib\dataimporthandler\lib目录:

修改solrconfig.xml如下:

即:<libdir="${solr.install.dir:../..}/contrib/dataimporthandler/lib"regex=".*\.jar"/>

l  数据库驱动包

把mysql数据库驱动包,拷贝到以下目录:

修改solrconfig.xml,如下:

<libdir="${solr.install.dir:../..}/contrib/db/lib"regex=".*\.jar"/>

 

1.2.2   配置dataimportHandler

在solrconfig.xml文件中配置dataimport请求url,如下信息:

配置的代码如下:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

    <lst name="defaults">

      <str name="config">data-config.xml</str>

    </lst>

</requestHandler>

 

1.2.3   创建并配置data-config.xml

在SolrCore中conf目录下,创建一个文件:data-config.xml

具体内容如下:

<?xml version="1.0" encoding="UTF-8" ?> 

<dataConfig>  

         <dataSource type="JdbcDataSource"  

                     driver="com.mysql.jdbc.Driver"  

                     url="jdbc:mysql://localhost:3306/solr"

                     user="root"  

                     password="123456"/>

         <document>  

                   <entity name="product" query="SELECT pid,name,catalog,catalog_name,price,description,picture FROM products">

                             <field column="pid" name="id"/>

                             <field column="name" name="product_name"/>

                             <field column="catalog" name="product_catalog"/>

                             <field column="catalog_name" name="product_catalog_name"/>

                             <field column="price" name="product_price"/>

                             <field column="description" name="product_description"/>

                             <field column="picture" name="product_picture"/>

                   </entity>  

         </document>

</dataConfig>

 

1.2.4   启动Tomcat进行测试

重启之后,先Execute,然后再refresh.

注意:到入数据前会先清空索引库,然后再导入。

也就是说删除solrCore下面的data目录。

 

 

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
Linux 开发工具
Redhat7.x 修改阿里云yum源
redhat系统中,如果你想要更新yum仓库,它会提示让你注册才能更新,因为centos和redhat基本相同,所以我把yum这一套全换成centos的。
6321 1
|
Android开发
Android stdio 无法新建或打开AIDL文件(解决方法)
Android stdio 无法新建或打开AIDL文件(解决方法)
1308 0
|
消息中间件 缓存 运维
阿里云IoT物联网实例视频讲解、场景案例汇总
阿里云IoT物联网实例视频讲解、场景案例汇总
2246 3
|
Web App开发
彻底卸载Google Chrome
彻底卸载Google Chrome
881 0
彻底卸载Google Chrome
|
存储 SQL JSON
Python 之 Pandas 文件操作和读取 CSV 参数详解
Python 之 Pandas 文件操作和读取 CSV 参数详解
|
Kubernetes 负载均衡 监控
k8s离线安装部署教程X86(二)
k8s离线安装部署教程 文件名称 版本号 linux核心 docker版本 20.10.9 x86 k8s版本 v1.22.4 x86 kuboard v3 x86 6.设置ipvs模式 k8s整个集
1158 0
|
弹性计算 应用服务中间件 开发者
阿里云学生服务器购买价格及学生免费服务器配置领取条件
阿里云学生服务器原来活动为云翼计划,后来升级为开发者成长计划,现在在高校学生在家实践活动中可以领取免费云服务器和无影云桌面
9860 1
阿里云学生服务器购买价格及学生免费服务器配置领取条件
|
监控 调度 异构计算
阿里云容器服务GPU监控2.0基础篇1:基本功能使用
本系列相关文章:阿里云容器服务GPU监控2.0基础篇1:基本功能使用阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误阿里云容器服务GPU监控2.0进阶篇1:剖析(Profiling)GPU使用情况必备知识阿里云容器服务GPU监控2.0进阶篇2:学会剖析(Profiling)GPU使用情况容器服务GPU监控2.0基于NV
1935 0
阿里云容器服务GPU监控2.0基础篇1:基本功能使用
|
存储 算法
Win系统 - 为什么标注1TB的硬盘到手才900多G
Win系统 - 为什么标注1TB的硬盘到手才900多G
1249 0
Win系统 - 为什么标注1TB的硬盘到手才900多G
|
人工智能 编解码 算法
4款玄铁RISC-V芯片亮相!
在首届“滴水湖中国RISC-V产业论坛”上,10款芯片集中发布,其中博流智能、爱普特、晶视智能、凌思微等公司共发布4款基于平头哥玄铁RISC-V处理器设计研发的芯片。
1336 0
4款玄铁RISC-V芯片亮相!