文档章节

Solr配置导入MySQL数据

go2school
 go2school
发布于 2014/11/12 10:48
字数 988
阅读 5121
收藏 11
点赞 0
评论 0

1. 编写配置文件

1)编写data-config-comment.xml,此文件用于描述如何查询MySQL数据,如何将数据变换导入索引。

假设有一个数据库叫mooc,其中有个表叫comment,代表学生的评论

其中:

  • entity对应MySQL数据库表中的一行

  • query对应全库导入的SQL查询

  • queryImportQuery 对应增量导入的SQL查询

  • deltaQuery对应增量导入获取最新修改的行ID,这些ID用于queryImportQuery,SQL的含义中

DATE(updatetime) >= '${dih.last_index_time}' OR DATE(writetime) >= '${dih.last_index_time}

表示comment的更新时间updatetime,或者comment的写入时间writetime比上一次的导入时间$(dih.last_index_time)还大。

<dataConfig>
   <dataSource type="JdbcDataSource" 
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/mooc" 
              user="root" 
              password="root"/>
   <document>
    <entity name="comment" 
	query="SELECT id, DATE_FORMAT(writetime, '%Y-%m-%dT%TZ') as 'writetime', title from comment"
	deltaImportQuery="SELECT id, DATE_FORMAT(writetime, '%Y-%m-%dT%TZ') as 'writetime', title from comment where id='${dih.delta.id}'"
	deltaQuery="SELECT id FROM comment WHERE DATE(updatetime) >= '${dih.last_index_time}' OR DATE(writetime) >= '${dih.last_index_time}'">       
	   <field column="id" name="id"/>	  
	   <field column="writetime" name="writetime"/>
	   <field column="title" name="title"/>       	
    </entity>   	
  </document>
</dataConfig>

如果field里面有HTML标签,则可以使用<entity transformer="HTMLStripTransformer" 来删除。这使用了Solr DataImportHandler的Transformer工具,可以定义多个链式transformer,彼此之间用逗号隔开。

2)假设要创建一个名为mooc的solr核,在其conf目录中的schema.xml文件中编写fields,加入id,writetime,title,其中text_cn,需要使用我上一则博客写的中文分词插件。

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


3) 配置Solr的solrconfig.xml

D:\libs\solr-4.10.2\example\solr\mooc\conf目录中,创建data-config-comment.xml

在solrconfig.xml中创建数据导入handler用来导入comment表,如下编写,其中的data-config-comment.xml即是第1步写的

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


2.配置使用到的JAVA库文件

创建D:\libs\solr-4.10.2\example\solr\mooc\lib,拷贝solr-dataimporthandler-4.10.2和mysql-connector-java-5.1.26-bin到此,这两个库用于导入和查询数据库


3.启动Solr

进入solr的example目录

java -jar start.jar


3.导入为索引数据

在浏览器运行如下命令做全库导入,表示将数据,导入到Solr核mooc中

http://localhost:8983/solr/mooc/dataimportcomment?command=full-import&commit=y

如果带clean=false参数,则表示不删除原数据


增量导入

http://localhost:8983/solr/mooc/dataimportcomment?command=delta-import


4.删除索引文件

编写一个XML文件,内容为

<delete><query>*:*</query></delete>

执行命令

java -Durl=http://localhost:8983/solr/mooc/update  -jar post.jar delete_docs.xml


5. 查询数据

1)使用Solr的edismax query,查询“的”字,返回ID,title,和writetime,以json格式,可以改成wt=xml,表示使用xml格式,但为了程序处理方便,用json

http://localhost:8983/solr/mooc/select?q=的&wt=json&indent=true&defType=edismax&qf=title&omitHeader=true&fl=id,title,writetime

2)精简的,只查出来ID

http://localhost:8983/solr/mooc/select?q=的&wt=json&defType=edismax&qf=title&omitHeader=true&fl=id

omitHeader=true表示取出数据信息

3)查询日期,使用如下参数

到目前为止:

fq=writetime:[* TO NOW]

从2011年8月19号到2014年8月19号:

fq=writetime:[2011-08-19T11:50:23Z TO 2014-08-19T11:50:23Z]

2011年8月19号以后:

fq=writetime:[2011-08-19T11:50:23Z TO *]

4)高亮显示关键字

http://localhost:8983/solr/mooc/select?q=好的&wt=json&indent=true&defType=edismax&qf=title&omitHeader=true&fl=id,title,writetime&hl=true

hl=true表示开启高亮显示


6.前端搜索操作流程

前端java script 发请求给后端的servlet,servlet向搜索引擎发出查询请求,返回结果给前端


7.定时增量导入数据

1)先写导入脚本sh_delta_import.sh

#!/bin/sh
curl "http://localhost:8983/solr/mooc/dataimportcomment?command=delta-import"
curl "http://localhost:8983/solr/mooc/dataimportcomment?command=delta-import"

重复一次,是因为Solr可能会在第一次返回一个警告,再执行一次就导入了。

2)配置/etc/crontab,添加一行,表示每天4点执行

00 04 * * * root /mooc/solr-4.10.2/example/sh_delta_import.sh

3)重启定时程序

/etc/rc.d/init.d/crond restart



© 著作权归作者所有

共有 人打赏支持
go2school
粉丝 10
博文 33
码字总数 14674
作品 0
技术主管
solr的DIH操作同步mysql数据

1.创建MySQL数据 CREATE TABLE ( INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '城市编号', INT(10) UNSIGNED NOT NULL COMMENT '省份编号', VARCHAR(25) NULL DEFAULT NULL COMMENT ......

yushiwh ⋅ 2017/09/28 ⋅ 0

solr搜索之入门及原理(一)

solr搜索技术 系列文章: solr搜索之入门及原理(一) solr搜索之demo和集成IKAnalyzer(二) solr搜索之solrJ语法(三) solr搜索之mysql导入数据到solr(四) solr搜索之tomcat运行solr(五...

wyait ⋅ 2017/07/05 ⋅ 0

技术分享:如何用Solr搭建大数据查询平台

0×00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一...

广岛秋泽 ⋅ 2016/03/30 ⋅ 0

solr新版本环境搭建

solr环境介绍 solr5.5 java1.7 mysql zookeeper solr这里使用的是solr5.5,因为该版本仍然支持jdk1.7适用性较广,但是该方法也能用在solr6.0上。通过该方法我们会搭建一个可以从数据库导入数...

千惊万喜 ⋅ 2016/09/06 ⋅ 0

Import data from a database into Solr.

Data Import This tutorial uses Mysql database import data into Solr。 Create table node table: node table has tens of thousands of records, test uses only 300. Full-Import Cre......

Nathans ⋅ 2016/09/13 ⋅ 0

shenzhanwang/Spring-solr

Spring-solr 本项目基于Apache Solr提供一个根据需求配置好的搜索引擎并导入一些初始数据,再基于Spring框架连接solr实现企业级搜索的功能。主要内容如下: 1.搜索引擎基于Solr5.3.1,官网:...

shenzhanwang ⋅ 2016/11/16 ⋅ 0

Solr6.3服务并从Mysql上导入数据

安装好solr6.3服务,我安装在centos7系统中,在/opt目录下 步骤1: 创建一个core,这里用hubin为例 步骤2: 把mysql所需的jar包(mysql驱动包mysql-connector-java-5.1.38.jar)和solr-6.3....

binhu ⋅ 2016/11/18 ⋅ 1

Solr5安装配置

Solr安装配置 一、Oracle VM VirtualBox配置 1、 网络 2、 修改网络ip cd /etc/sysconfig/network-scripts/ vim ifcfg-enp0s3 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PE......

古三哥 ⋅ 2016/08/19 ⋅ 0

Solr的安装部署及简单使用

由于demo项目使用的是maven构建,maven仓库用的是oschina的,此时solr的最新版本是5.4,而oschina中的solrj最新版本是5.3.1,所以我们为了保持一致性,也将下载5.3.1的solr作为演示 一、下载...

Fraud ⋅ 2016/01/05 ⋅ 0

Solr 搭建搜索服务器

一、安装配置 所需JDK和Tomcat和安装包solr-4.2.1.tgz Tomcat安装目录 /usr/local/tomcat 修改Tomcat支持中文 # vi /usr/local/tomcat/conf/server.xml <Connector port="8080" URIEncoding=......

zppiio ⋅ 2015/03/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 33分钟前 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 36分钟前 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 39分钟前 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 47分钟前 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 今天 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 今天 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部