前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >solr系列--导入文件

solr系列--导入文件

作者头像
Dlimeng
发布2023-06-29 14:05:38
1550
发布2023-06-29 14:05:38
举报
文章被收录于专栏:开源心路开源心路

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,执行索引导入

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档