solr_专题:通过 Data Import Handler 添加结构化数据

一、什么是 Data Import Handler?

许多搜索应用存储了以结构化数据存储来创建索引的内容,例如关系数据库。Data Import Handler 提供了一种机制以便从数据存储中导入内容并为之建立索引。除了关系数据库,DIH 还能够为 HTTP 基础数据源(如 RSS 和 新闻摘要),邮件存储库和结构化 XML(XPath 处理器来生成域)。

二、基础概念和术语

1、Transformer(改造器):每一个有实体匹配的域集合可以选择性的被改造。这个过程可能会修改域,创建一个新的域或者将一个单行生成多行(或文档)。在 DIH 中有几个内置的改造器,它们可以用来修改日期和去除 HTML。我们也可以通过公共的接口写自定义的改造器。

2、Processor(处理器):实体处理器可以从数据源中提取内容,改造内容并添加到索引中。我们可以用自定义的实体处理器来扩展或代替系统提供的实体处理器。

3、Entity(实体):从概念上讲,实体会生成一个文档集合,包含了多个域。然后由 Solr 创建索引。对于关系数据库的数据源,一个实体可以是一张视图或表(可以由一个或多个 SQL 命令处理生成具有一个或多个列(域)的行(文档)集合。

4、Datasource(数据源):定义了数据的位置。对于一个数据库而言,它是数据库连接 DSN。对于 HTTP 而言,它是一个基地址(base URL)

三、配置

1、配置 solrconfig.xml

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">/path/to/my/DIHconfigfile.xml</str>
  </lst>
</requestHandler>
唯一的必填参数是 config 参数,它指明了 DIH 配置文件的地址。该配置文件包含了数据源的说明:如何匹配数据,匹配哪些数据和如何处理数据以生成索引文档。

我们可以有多个 DIH 配置文件。每一个文件要求在 solrconfig.xml 中有一个独立的定义来指明文件路径。

2、配置 DIH 配置文件

下面的例子中提取了一个数据库中的四张表数据。

<dataConfig>
	<!-- 
		 The first element is the dataSource, in this case an HSQLDB database.
		 The path to the JDBC driver and the JDBC URL and login credentials are all specified here.
		 Other permissible attributes include whether or not to autocommit to Solr, the batchsize
		 used in the JDBC connection, a 'readOnly' flag. 
		 The password attribute is optional if there is no password set for the DB.
		 这第一个元素是 dataSource(数据源),这个例子中是 HSQLDB 数据库。
		 这里包括了数据库驱动,数据库连接地址和登录信息。
		 其他的属性包括是否自动提交到 Solr 服务器,数据库连接的批量处理大小,是否只读。
		 如果数据库没有密码,那么 password 属性是可以不填的。
		 
	-->
	<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:./example-DIH/hsqldb/ex" user="sa" password="secret"/>
	<!--
	Alternately the password can be encrypted as follows. This is the value obtained as a result of the command
	openssl enc -aes-128-cbc -a -salt -in pwd.txt
	password="U2FsdGVkX18QMjY0yfCqlfBMvAB4d3XkwY96L7gfO2o=" 
	WHen the password is encrypted, you must provide an extra attribute
	encryptKeyFile="/location/of/encryptionkey"
	This file should a text file with a single line containing the encrypt/decrypt password
	pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值