Solr DIH以Mysql为数据源批量创建索引

演示使用solr管理后台,以mysql为数据源,批量建索引的方法

测试于:Solr 4.5.1, mmseg4j 1.9.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7

配置数据源

[[email protected] ~]# cd /root/solr-4.5.1/example/example-DIH/solr/db/conf[[email protected] conf]# touch mysql-data-config.xml 

编辑mysql-data-config.xml,根据需要添加新内容,内容可参见同目录下db-data-config.xml文件

<dataConfig>    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/basic" user="root" password="123"/>    <document>        <entity name="article" transformer="HTMLStripTransformer"                query="SELECT id, title, content FROM article">                <field column="id" name="id" />                <field column="title" name="title" />                <field column="content" name="content" stripHTML="true" />        </entity>    </document></dataConfig>

transformer="HTMLStripTransformer"配合stripHTML="true"使用来达到过滤正文html标签的作用。

配置dataimport handler

打开solr管理后台,选择相应的core,选择Dataimport(可参考如下第二张截图)
初次使用此功能,会显示:sorry, no dataimport-handler defined!
编辑solrconfig

[[email protected] ~]# vi solr-4.5.1/example/solr/collection1/conf/solrconfig.xml

加入如下代码

 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  <lst name="defaults">    <str name="config">/root/solr-4.5.1/example/example-DIH/solr/db/conf/mysql-data-config.xml</str>  </lst></requestHandler>

添加位置根据自己的习惯,便于查找即可,我这里放到系统内置最后一个handler,replication之下,如:

重启报错:java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler引入需要的包即可

[[email protected] ~]# cp solr-4.5.1/dist/solr-dataimporthandler-*.jar /opt/tomcat/webapps/solr/WEB-INF/lib/

因为涉及到连接mysql,自己找一个mysql的驱动包也放到上述lib中

重启

执行创建索引

  1. 选择对应的core;
  2. 选择Dataimport;
  3. 选择实体article;(注Solr 4.9.0中实体列表为空,解决方法参见:For security reasons, SolrResourceLoader cannot load files from outside the instance‘s directory)
  4. 执行Execute;
  5. Refresh Status查看状态,右侧会显示正确索引的数量。

如过此内容对您有帮助,欢迎以点击广告的形式来支持我们,但请每天不要多于一次,否则可能被识别恶意点击,导致封号。

时间: 2024-11-12 13:01:17

Solr DIH以Mysql为数据源批量创建索引的相关文章

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

一,准备数据库数据表结构 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', `ty

Mysql运维管理-创建索引知识及创建索引的多种方法实战9

为表的字段创建索引 索引就像书的目录一样,如果在字段上建立索引,那么以索引为条件时可以加快查询数据的速度. 1 创建主键索引 查询数据库的内容,按主键查询是最快的,每个表只能有一个主键,但是可以有多个普通索引列,主键列要求所有内容必须唯一,而索引列不要求内容唯一.我们无论建立主键索引还是普通索引,都要在表的对应列上创建,可以对单列创建索引也可以对多列创建索引建立主键索方法: 1.在创建表时,可以增加建立主键索引语句 [email protected] 04:0932->create table

Solr5.5.3的研究之路 ---1、从Mysql导入数据并创建索引

公司需要用到全文检索,故使用Solr,也是新人一枚,本人查看的前提是Solr已经安装部署成功,我用的服务器是自带的Jetty 1.创建Collection [[email protected] bin]# ./solr create -c wuye 2.会生成2个目录 /usr/local/solr/solr-5.5.3/server/solr/wuye/conf   配置文件目录 /usr/local/solr/solr-5.5.3/server/solr/wuye/data 索引等存放目录

mysql 中批量创建日志表信息脚本

mysql中通过存储过程批量创建日志信息表脚本如下: drop PROCEDURE if EXISTS reqSp; DELIMITER // create procedure reqSp(sTime varchar(32), eTime varchar(32),tchema varchar(32)) begin declare sName varchar(128); declare uid varchar(128); declare orderId varchar(128); declare

基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创建数据库>,本文继续探索关于Shell和MySQL的结合使用,我不知道当一个数据库设计完成之后如何快速的创建设计好的数据库表和添加相应基本数据,我目前知道的就是使用Shell和SQL脚本来达到我的目的--快速的.多次的.可重复利用的创建数据库表. 创建一个数据库表的SQL脚本: /***********

MYSQL批量创建表的存储过程

因为业务需要,创建了100个表,但是这些表的结构都是一样的,作为程序员,就是要解决这种重复劳动.然而这种事情还要单独写个php脚本的话太麻烦了吧,所以就干脆学了一下直接用Mysql存储过程怎么实现: 首先是创建表的:( LPAD(`@i`, 2, '0')的作用 是将1,2,3这些数字转化为'01','02','03') DROP PROCEDURE IF EXISTS `create_tables`; CREATE PROCEDURE create_tables () BEGIN DECLAR

批量创建数据库和批量数据恢复

近期公司有一个数据库需要迁移,但是里面创建的数据库比较多,我们采取脚本将库单独备份,然后上传到另一台主机,新建数据库,然后恢复数据库.将自己写的几个小脚本粘贴到此, 分库压缩备份 #/bin/sh #version 0.1 MYUSER=mysqlback [email protected] #SOCKET=/data/3306/mysql.sock MYLOGIN="mysql -u$MYUSER -p$MYPASS " MYDUMP="mysqldump -u$MYUSE

solr 4.8+mysql数据库数据导入 + mmseg4j中文全文索引 配置笔记

1.如何将solr部署,请参考之前的文章 2.按上述配置好后,在solr_home文件夹中,将包含collection1文件夹,这就是solr的一个实例.下面我们来看看collection1中的文件内容. collection1中包含conf和data两个子文件夹.data中包含tlog和index(如果没有也没关系,稍后再solr建立索引时,将会被创建).tlog是记录日志的文件夹,index是存放索引的文件夹.conf中包含lang文件夹和若干文件.lang文件夹中包含的是词库文件,但是so

mysql 如何提高批量导入的速度

mysql 如何提高批量导入的速度 最近一个项目测试,有几个mysql数据库的表数据记录达到了几十万条,在搭建测试环境 导入 测试数据时,十分慢.在网上搜索了一下,有下面一些方法可以加快mysql数据库导入数据的速度:0. 最快的当然是直接 copy 数据库表的数据文件(版本和平台最好要相同或相似):1. 设置 innodb_flush_log_at_trx_commit = 0 ,相对于 innodb_flush_log_at_trx_commit = 1 可以十分明显的提升导入速度:2. 使