参考资料:

https://cwiki.apache.org/confluence/display/solr/Uploading+Structured+Data+Store+Data+with+the+Data+Import+Handler

https://wiki.apache.org/solr/DataImportHandler

http://wiki.apache.org/solr/TikaEntityProcessor

Solr 通过Dataimport可以对各种文件类型(包括邮件)建索引,也可以对关系型数据库建索引。

前提依赖Jar包

Dataimport从关系型数据库建索引时,依赖以下jar包,这些Jar包位于Solr安装包下面的solr-6.1.0\dist\目录下目录下:

本实例是SQL Server关系型数据库,所以还要添加sqljdbc42.jar到指定路径下。

Dataimport为普通文件建索引时,依赖以下jar包,这些jar包位于Solr安装包的solr-6.1.0\contrib\extraction\lib目录下

这些jar包在本机上的统一存放位置为:/var/lib/solr/lib/

在solrconfig.xml文件中添加以上jar包的引用。

<lib dir="/var/lib/solr/lib/" regex=".*\.jar" />

一、配置solrconfig.xml

  <requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">tika-data-config.xml</str>
<str name="update.chain">uuid</str>
</lst>
</requestHandler>

二、配置tika-data-config.xml

在文件solrconfig.xml同级目录下,新建文件tika-data-config.xml,tika-data-config.xml文件中的内容配置如下:

<dataConfig>  
<!--可以配置多个dataSource,每个都有唯一一个name-->
<dataSource name="sqldb2" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://10.2.8.170:1433" user="xxx" password="xxxxxxx"/>
<dataSource type="BinFileDataSource" name="f1"/>
<dataSource type="FileReaderDataSource" name="f2"/> <document>
<!--可以配置多个Entity,每个Entity通过name属性来区分-->
<!--Entity数据源为文件-->
<entity name="files" dataSource="f1" rootEntity="false"
processor="FileListEntityProcessor"
baseDir="/usr/local/solr/files/"
fileName=".*.(doc)|(pdf)|(xls)|(ppt)|(docx)|(txt)|(pptx)|(xlsx)|(xml)|(csv)|(json)|(html)|(sh)|(css)|(png)"
recursive="true"> <field column="fileAbsolutePath" name="url" />
<field column="fileSize" name="size" />
<field column="fileLastModified" name="lastModified" />
<field column="file" name="fname"/>
<entity
name="documentImport"
processor="TikaEntityProcessor"
url="${files.fileAbsolutePath}"
format="text">
<field column="Author" name="author" meta="true"/>
<field column="title" name="title" meta="true"/>
<field column="subject" name="subject" meta="true"/>
<field column="Content-Type" name="content_type" meta="true"/>
<field column="text" name="content"/>
</entity>
</entity>

<!--Entity数据源为SQL Server数据库-->
<entity name="DimOrganization" dataSource="sqldb2"
query="SELECT [物料类型名称] as 名称 FROM [GreeBGDW].[dbo].[Dim_MaterielType]">
<field column="名称" name="name"/>
</entity>
         <!--Entity数据源为SQL Server数据库-->
           <entity name="" dataSource="sqldb2" 
query="SELECT [name] as name , [name] as cat ,name as manu FROM [GreeBGDW].[dbo].[180119]">
<field column="name" name="name"/>
<field column="cat" name="cat"/>
<field column="manu" name="manu"/>
</entity> </document>
</dataConfig>
 
文件实体属于简介 

一个简单的实体处理程序,可以用于枚举标准文件系统中的文件列表,它不需要使用DataSource.属性如下:

  • fileName:(必填) 用正则表达式来标记文件名
  • baseDir:(必填) 基础目录,绝对路径.
  • recursive:是否递归文件列表,默认为false.
  • excludes:不包括的文件名的正则表达式
  • newerThan:日期参数,格式: (yyyy-MM-dd HH:mm:ss),它也可以是一个数学日期,如('NOW-3DAYS'),其中的单引号是必填的.也可以是一个有效的变量格式,如(${var.name}).
  • olderThan :日期格式,规则同上.
  • biggerThan:整型参数.
  • smallerThan:整型参数.
  • rootEntity:它一般情况下都是false(除非你只索引文件名).直属于<document>下的实体才是根实体.那就意味着,根实体发出的每一行都会被solr/lucene创建.但是在这种情况下,我们不希望一个文件对应一个文档(document).我们希望生成一个文档(document),每一行的发出都是由下面的实体'x'来完成的.因为实体'f'包含了rootEntity=false,直属实体f下的实体就变成了一个根实体.
  • dataSource:数据源
 
错误记录

【错误一】 org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /configs/collection2/dataimport.properties

【解决方法】在配置文件conf/目录下添加一个空的dataimport.propertie文件。

 

Solr Dataimport配置的更多相关文章

  1. solr连接数据库配置

    一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...

  2. Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引

    Solr学习笔记之3.Solr导入SQLServer数据建立索引 一.下载MSSQLServer的JDBC驱动 下载:Microsoft JDBC Driver 4.0 for SQL Server ...

  3. 威胁快报|Solr dataimport成挖矿团伙新型利用方式

    概述 近日,阿里云安全团队监测到挖矿团伙利用solr dataimport RCE(CVE-2019-0193)作为新的攻击方式对云上主机进行攻击,攻击成功后下载门罗币挖矿程序进行牟利.该团伙使用的恶 ...

  4. solr多核配置

    假设已经配置好了一个单core的solr服务器. solr.xml配置文件 单核和多核主要在solr.xml配置不同.在solr/example中已经有一个名称为multicore的文件夹里面给我们配 ...

  5. BugPhobia沟通篇章:Solr模式配置与数据导入调研

    0x01 :Scrum Meeting特别说明 特别说明,考虑到编译原理课程考核的时间安排,每天开发时间急剧缩短以至于难以维系正常的Scrum Meeting,因此,将2015/12/13 00:00 ...

  6. solr scheme配置简介

    solr 字段配置,和数据库数据索引配置 配置solr字段. schema.xml 文件里配置 先讲解一下,里面的一些字段 1. <types> ... </types> 表示 ...

  7. 在Solr中配置中文分词IKAnalyzer

    李克华 云计算高级群: 292870151 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 在Solr中配置中文分词IKAnalyzer 1.在配置文件schema.xml ...

  8. solr 日志配置

    配置Solr日志记录 临时记录设置 您可以使用Admin Web界面来控制Solr中的日志输出量.选择LOGGING链接.请注意,此页面只允许您更改正在运行的系统中的设置,并不会保存在下一次​​运行中 ...

  9. 四、Solr数据源配置(JNDI、DIH)及定时重做索引

    简介 Solr支持很多种创建索引的方式,包括网页,xml以及数据库,因为我这边做的是企业级的搜索,所以用的是数据库建立索引.其实从数据库建立索引,很大程度上取决于原来的数据库设计. 从数据库建立索引, ...

随机推荐

  1. Matlab:回归分析(1)

    1.多元线性回归 %数据的输入 x = [ ]; y = [ ]; %转换为列向量 X = [ones(,) x']; Y = y'; %回归分析及检验 [b, bint, r, rint, stat ...

  2. [Java Concurrent] 并发访问共享资源的简单案例

    EvenGenerator 是一个偶数生成器,每调用一个 next() 就会加 2 并返回叠加后结果.在本案例中,充当被共享的资源. EvenChecker 实现了 Runnable 接口,可以启动新 ...

  3. fedora19配置 SSH 免密码登陆

    a.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa b.cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   ...

  4. nav标签的作用

    . <nav>用来将具有导航性质的链接划分在一起,使代码结构在语义化方面更加准确,同时对于屏幕阅读器等设备的支持也更好.一直以来,我们习惯于使用形如<div id="nav ...

  5. 百度地图API 重新生成点聚合的功能

    百度点聚合用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能. http://api.map.baidu.com/library/MarkerClusterer/1.2/docs/symbo ...

  6. maven项目中找不到Maven Dependencies解决办法

    用eclipse创建maven项目后,在Deployment Assembly中通过Add...->Java Build Path Entries导入Maven Dependencies时,发现 ...

  7. wpf异常:指定的 Visual 不是此 Visual 的上级问题处理解析

    WPF在画线的时候,调用Control0.TransformToAncestor(Control1).Transform(new System.Windows.Point(0, 0))方法转换坐标的时 ...

  8. android实现边框圆角

    1. 在drawable 下新建 shape.xml 文件 Xml代码  :  1 <?xml version="1.0" encoding="UTF-8" ...

  9. 2015 UESTC Winter Training #6【Regionals 2010 >> North America - Rocky Mountain】

    2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis ...

  10. 你以为你了解最常用的string.substring()的几个常见问题吗?

    ---恢复内容开始--- 前言: 1.项目中我们难免会用到各种对字符串的处理方法,可是你曾知道substring()这个用法别有洞天?你考虑过一下几个情况吗? 使用Substring()时的正确写法: ...