参考资料:

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文件。

 

最新文章

  1. Wave - 花たん 音乐
  2. 彻底理解js中this的指向,不必硬背。
  3. STM32——外部中断EXIT实现
  4. 通过js判断访客显示器屏幕分辨率并给出提示
  5. LeetCode &quot;Top K Frequent Elements&quot;
  6. 深入掌握Java中的enum
  7. gridview 字段没有绑定由于column visible= false
  8. 过生日,也要学学哈,这次是SHELL的GETOPTS
  9. C# 绘制窗体客户非客户区要用WM_PAINT和WM_NCPAINT
  10. SRM 404(1-250pt, 1-500pt)
  11. Mac中的快捷键
  12. java_Timer_schedule jdk自带定时器
  13. SRM340 VegetableGarden
  14. toTree
  15. logstash grok 内置正则
  16. 【ArcGIS】栅格分析-问题之001(转)
  17. PHP的网站主要攻击方式有哪些?
  18. App Inspector 功能详解
  19. HDU 4498 Function Curve (自适应simpson)
  20. GlusterFS实战

热门文章

  1. linux常用命令2
  2. “/”应用程序中的服务器错误。 / c:\windows\temp目录权限设置
  3. Word Break II——LeetCode
  4. 《Linear Algebra and Its Applications》-chaper2-矩阵代数中的基本性质
  5. Centos6.x/Oracle11G 自动化静默安装配置脚本
  6. Cgroup - Linux 内存资源管理
  7. NSString copy or not (strong)?
  8. Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建
  9. 泛泰A870刷4.4专用英文版非触摸CWM Recovery 6.0.4.8(三版通刷)
  10. [Angular 2] Mapping Streams to Values to Affect State