solr系列--导入文件

Posted Java小学生的成长日志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr系列--导入文件相关的知识,希望对你有一定的参考价值。

dataimporthandler插件导入pdf
从PDF文件中提取文本进行索引
 首先依然是在solrconfig.xml配置文件中配置dataimport请求处理器,并指定data-config.xml配置文件加载路径:
<requestHandler name="/dataimport" class="solr.DataImportHandler">  
    <lst name="defaults">  
      <str name="config">data-config.xml</str>  
    </lst>  
</requestHandler>  


  指定依赖的jar包加载路径:
 <lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib/" regex=".*\.jar" />


如果该路径没有jar,到dist复制jar包创建目录。
data-config.xml:
导入一个pdf:
<dataConfig>
    <dataSource type="BinFileDataSource" />
    <document>
        <entity name="tika-test" processor="TikaEntityProcessor"
                url="/xxx.pdf" format="text">
                <field column="Author" name="author" meta="true"/>
                <field column="title" name="title" meta="true"/>
                <field column="text" name="text"/>
        </entity>
    </document>
</dataConfig>


批量导入pdf:
<dataConfig>  
  <dataSource name="fileDataSource" type="BinFileDataSource" />
 <document>
<entity name="files" dataSource="fileDataSource" rootEntity="false" processor="FileListEntityProcessor"  baseDir="/itcast/doc"  fileName=".*.(doc)|(pdf)|(xls)|(ppt)|(docx)" recursive="true"  onError="skip" >
<field  column="fileAbsolutePath" name="filePath" />
<field  column="fileSize" name="size" />
<field  column="fileLastModified" name="lastModified" />
<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="text" name="text"/>
</entity>
</entity>
 </document>
</dataConfig>
  baseDir表示获取这个文件夹下的文件,fileName支持使用正则表达式来过滤一些baseDir文件夹下你不想被索引的文件,processor是用来生成Entity的处理器,而不同Entity默认会生成不同的Field域。FileListEntityProcessor处理器会根据指定的文件夹生成多个Entity,且生成的Entity会包含fileAbsolutePath, fileSize, fileLastModified, fileName这几个域,recursive表示是否递归查找子目录下的文件,onError表示当出现异常时是否跳过这个条件不处理。


然后我们需要在schema.xml中定义域,
 <field name="text" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
   <field name="author" type="string" indexed="true" stored="true" />
   <field name="title" type="string" indexed="true" stored="true" />


    <field name="filePath" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />  
   <field name="size" type="long" indexed="true" stored="true" />  
   <field name="lastModified" type="date" indexed="true" stored="true" />  
   
   <copyField source="filePath" dest="pdf_keywords"/>
   <copyField source="text" dest="pdf_keywords"/>
   <field name="pdf_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>


 <fieldType name="text_ik" class="solr.TextField">      
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>      
   </fieldType>  
 

配置完毕,然后重启你的tomcat,执行索引导入


以上是关于solr系列--导入文件的主要内容,如果未能解决你的问题,请参考以下文章

搜索引擎系列十:Solr(solrj 索引API 结构化数据导入)

搜索引擎系列十:Solr(solrj 索引API 结构化数据导入)

Solr系列4-SolrJ开发应用

(solr系列:五) solr定时实时重建索引和增量更新

搜索引擎solr系列---solr分词配置

Solr系列漏洞复现