专栏首页喵了个咪的博客空间Solr搜索引擎 — 通过mysql配置数据源

Solr搜索引擎 — 通过mysql配置数据源

上一节我们已经通过两种方式运行了solr,本节演示怎么配置solr的mysql数据源

附上:

喵了个咪的博客:http://w-blog.cn

Solr官网:http://lucene.apache.org/solr/

> PS:8.0.0版本已经发布,本文使用此时较为稳定的7.7.1版本

一,准备数据库

数据表结构

CREATE TABLE `app` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(255) NOT NULL DEFAULT '',
  `score` decimal(10,5) NOT NULL DEFAULT '0.00000',
  `downLoadNum` int(10) NOT NULL DEFAULT '0',
  `top` int(10) NOT NULL DEFAULT '0',
  `type` int(10) NOT NULL DEFAULT '1',
  `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

生成一些测试数据

因为我们需要使用mysql作为数据源,我们需要增加对mysql使用的jar包

> cd server/solr-webapp/webapp/WEB-INF/lib/
> wget http://pic.w-blog.cn/mysql-connector-java.jar

二、增加solr-core

> PS:这里基础solr命令启动的程序并未基于tomcat进行配置,后续cloud集群会使用tomcat进配置

尝试增加一个core会提示找不到配置,复制一份默认的配置文件

> cp -r server/solr/configsets/_default server/solr/new_core

在solrconfig.xml 下添加以下配置,添加位置大约在 680行,SearchHandler 配置上面:

> vim server/solr/new_core/conf/solrconfig.xml

<!-- Request Handlers
       http://wiki.apache.org/solr/SolrRequestHandler
       Incoming queries will be dispatched to a specific handler by name
       based on the path specified in the request.

       If a Request Handler is declared with startup="lazy", then it will
       not be initialized until the first request that uses it.
    -->

  <!-- add property -->
  <requesthandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
    <lst name="defaults">  
        <str name="config">data-config.xml</str>  
    </lst>
  </requesthandler>
  
  <!-- SearchHandler
       http://wiki.apache.org/solr/SearchHandler
       For processing Search Queries, the primary Request Handler
       provided with Solr is "SearchHandler" It delegates to a sequent
       of SearchComponents (see below) and supports distributed
       queries across multiple shards
    -->

该文件的配置如下,连接的是mysql也支持其他的数据库

  • query:查询数据库表符合记录数据
  • deltaQuery:增量索引查询主键ID 注意这个只能返回ID字段
  • deltaImportQuery:增量索引查询导入的数据
&gt; vim server/solr/new_core/conf/data-config.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
<dataconfig>
    <datasource name="source" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/appstore" user="root" password="123456" />
    <document>
        <entity name="app" pk="id" datasource="source" query="select * from app" deltaimportquery="select * from app where id = '${dih.delta.id}'" deltaquery="select id from app where update_date > '${dataimporter.last_index_time}' and type = 1">
            <field column="id" name="id" />
            <field column="update_date" name="update_date" />
        </entity>
    </document>
</dataconfig>

在这之后,需要配置managed-schema文件,与数据库进行映射,在117行附近,添加与数据库的映射,具体添加规则,不详细写了。

&gt; vim server/solr/new_core/conf/managed-schema

<!-- add propertity -->
<field name="appName" type="string" indexed="true" stored="true" />
<field name="score" type="string" indexed="true" stored="true" />
<field name="downLoadNum" type="string" indexed="true" stored="true" />
<field name="top" type="string" indexed="true" stored="true" />
<field name="type" type="string" indexed="true" stored="true" />
<field name="update_date" type="string" indexed="true" stored="true" />

重启solr

&gt; solr restart -force

再次增加core发现已经可以增加成功

初始化数据

初始化完成就可以进行查询了

如果修改了可以触发更新操作

当然也可以通过请求URL的方式进行数据更新,这里也方便索引的更新和程序相结合

http://172.16.3.148:8983/solr/new_core/dataimport?command=delta-import&amp;clean=%20false&amp;commit=true&amp;wt=json&amp;indent=true&amp;verbose=false&amp;optimize=false&amp;debug=false

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Solr搜索引擎 — 两种安装方式

    常常在业务开发中会遇到大列表的查询需求或者按照各项条件搜索内容,一般的做法往往都是数据库直接搞定,但是到了一定的程度只有这类需求会带来巨大的开销,一个表格中涉...

    喵了个咪233
  • [喵咪Liunx(5)集群管理利器pssh

    [喵咪Liunx(5)集群管理利器pssh ? 前言 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件...

    喵了个咪233
  • [喵咪Redis]Redis-Sentinel

    [喵咪Redis]Redis-Sentinel ? 前言 redis-Sentinel 是我们这次来一同学习 redis 的重点,在我们现在的系统已经离不开 r...

    喵了个咪233
  • 0700-6.2.0-使用Solr7对多种格式文件建立全文索引

    Solr是一个开源搜索平台,用于构建搜索应用程序。它建立在Lucene(全文搜索引擎)之上。Solr是企业级的,快速的和高度可扩展的。使用Solr构建的应用程序...

    Fayson
  • solr的介绍及安装

    第六步:把/root/solr-4.10.3/example/lib/ext目录下的所有的jar包,添加到solr工程中。

    用户5927264
  • Nutch2.1+Hbase+Solr快速搭建一个爬虫和搜索引擎(快速,基本2小时内搞定)

    链接: https://pan.baidu.com/s/1Tut2CcKoJ9-G-HBq8zexMQ 提取码: v75v

    海涛
  • ReSharper 在 C 盘占用了太多空间了,本文告诉你如何安全地删除或转移这些文件

    一个不小心,我的 SSD 又满了。到底是谁占用了那么多的空间!如果你是 ReSharper 的重度用户,那么可能你的调查结果会直指 JetBrains...

    walterlv
  • React Native和原生app通信机制详解

    概述 React Native用iOS自带的JavaScriptCore作为JS的解析引擎,但并没有用到JavaScriptCore提供的一些可以让JS与OC互...

    xiangzhihong
  • React Native和原生app通信机制详解

    概述 React Native用iOS自带的JavaScriptCore作为JS的解析引擎,但并没有用到JavaScriptCore提供的一些可以让JS与OC互...

    xiangzhihong
  • 安卓开发中strings.xml的使用

    听着music睡

扫码关注云+社区

领取腾讯云代金券