前言
最近在做一个文件系统,使用solr搜索文档资料关键字已经不能满足需求了,有的用户可能只记住了文档内容的某个关键字,所以需要做一个文档的全文搜索,本章写的是使用tika创建文档索引,利用数据导入处理程序(Data Import Handler),(不建议大家利用tika在java中读取文件内容然后在上传到solr上,这样会影响效率,而且淘宝卖商品,新出的商品也不会马上搜索的到,而是人工去读取操作,或者定时去读取)
(我也是一个初学者,写的不好莫怪...如果有不好的地方欢迎评论区评教)
tika理解
从我对tika的实践和api的认知...tika有着多种文件处理机制,可以把支持的文件内容读取到内存中.solr就是利用tika的读取,把文件内容写道变量域字段中,查询的时候还是跟普通索引一样的查询,这是我小白的理解.
配置tika操作
解压的solr下面有一个pdf文档solr-word.pdf,文件位置: solr-7.2.1/example/exampledocs/solr-word.pdf,内容如下:
内容就一段话
增加字段域
这里就不说怎么创建core了,如果看这篇文章还不知道怎么创建core的话,还是先去入门吧.
增加字段:vim vim /usr/local/solr-7.2.1/server/solr/document/conf/managed-schema
<field name="fileName" type="string" indexed="true" stored="true"/>
<field name="content" type="string" indexed="true" stored="true"/>
说明:content是存储文件内容的,filename存储文件名
修改solrconfig.xml,补充DIH 配置:
编辑:vim /usr/local/solr-7.2.1/server/solr/document/conf/solrconfig.xml
添加内容:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
添加data-config.xml文件
由于将使用额外定位的实体处理器(TikaEntityProcessor),所以需要修改加载DIH库的(配置)
在solrconfig.xml文件的同级目录下创建一个data-config.xml文件
vim data-config.xml
<dataConfig>
<dataSource name="tikaS" type="BinFileDataSource" />
<document>
<entity name="tika_file" dataSource="tikaS" processor="TikaEntityProcessor" url="/usr/local/src/upload/document/${dataimporter.request.filename}" format="text">
<field column="Author" name="author" meta="true"></field>
<field column="title" name="title" meta="true"></field>
<field column="text" name="content"></field>
</entity>
</document>
</dataConfig>
${dataimporter.request.filename}是外面传入的参数
重启solr:/usr/local/solr-7.2.1/bin/./solr restart -p 9023 -force
导入文件生成文件内容索引
好了