1、与前面的文章一样,还是得建立数据导入方式跟查询方式。在实例的conf文件下建立tika-data-config.xml,配置如下
<dataConfig>
<script><![CDATA[
id = 1;
function GenerateId(row) {
row.put('id', (id ++).toFixed());
return row;
}
function WipOffHtml(row) {
var file = row.get('file');
row.put('file',file.substr(0,file.indexOf('.')));
return row;
}
]]>
</script>
<dataSource type="BinFileDataSource" />
<document>
<entity name="files" dataSource="binary" rootEntity="false"
processor="FileListEntityProcessor"
baseDir="D:\****\****\******" fileName=".*.(php)"
recursive="true">
<!-- 文件类型实体,下接要建立索引的文件路径跟物件类型,如果有多种文件类型则是fileName=".*.(doc)|(pdf)|(xls)|(ppt)|(docx)|(XXXXX)" -->
<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" transformer="HTMLStripTransformer,RegexTransformer,script:GenerateId">
<field column="file" name="fileName"/>
<field column="id" name="id" />
<field column="Author" name="author" meta="true"/>
<field column="title" name="title" meta="true"/>
<field column="text" name="text" stripHTML="true" />
<!-- 这里面就是你要建立的文件名称了,比如你要读取作者、名字、文本、文件类型,还有其他的就自己可以加 -->
</entity>
</entity>
</document>
</dataConfig>
2、配置solrconfig.xml,添加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">tika-data-config.xml</str>
</lst>
</requestHandler>
3、配置managed-schema,添加
<field name="fileName" type="string" indexed="true" stored="true"/>
<field name="filePath" type="string" indexed="true" stored="true"/>
<field name="author" type="string" indexed="true" stored="true"/>
<field name="title" type="string" indexed="true" stored="true"/>
<field name="text" type="text_general" indexed="true" stored="true" multiValued="true"/>
"id"默认就有的,就不配了,这里加上自己想要的,上文也解释了一下其他的情况,这里不做介绍了。
4、准备JAR包,拷贝solr发布包solr-****\contrib\extraction\lib下所有jar包到apache-tomcat-*****\webapps\solr\WEB-INF\lib文件夹下。***代表你自己使用的版本。
5、启动测试
接下来查询就OK了。但是有的时候,再你高亮的时候回出现高亮得不多的情况,为什么呢?因为你配置的最大段默认是100,你只需要改大就可以了,在solrconfig中改大
<fragmenter name="gap"
default="true"
class="solr.highlight.GapFragmenter">
<lst name="defaults">
<int name="hl.fragsize">100000</int>
</lst>
</fragmenter>
关键是改fragsize中,如果是在solrJ中使用,也是改这个地方