• Solr Dataimport配置


    参考资料:

    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.0dist目录下目录下:

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

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

    这些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="180119" 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文件。

     
  • 相关阅读:
    Jenkins Pipeline 多分支流水线 Input length = 1
    使用 Kubeadm 部署 Kubernetes(K8S) 安装 持久化存储(NFS网络存储)
    查询表名所在数据库名
    小林coding网站mysql基础MySQL索引的数据结构和算法
    小林coding网站mysql基础server层mysql连接器
    小林coding网站mysql基础server层执行器
    小林网站基础篇索引创建与否的判断
    小林coding网站mysql基础server层mysql查询缓存解析器优化器
    利用numpy select 和numpy where 做pandas数据处理
    mysql explain extra 信息分析
  • 原文地址:https://www.cnblogs.com/saratearing/p/5740017.html
Copyright © 2020-2023  润新知