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