我必须索引位于递归目录结构中的日志文件(每个目录可以有一个或多个文件和目录)。日志文件具有各种不同的扩展名。搜索将基于日志文件的文本。包含特定字符串(搜索关键字)的所有文件应与搜索结果的名称和完整路径一起出现。
我尝试使用DIH tika,但似乎仅适用于一个文件。我尝试了FileListEntityprocessor,但无法使其正常工作。
如何使用Solr索引这些日志文件。如果有人这样做,请帮助我。
提前致谢。
P.S。单个日志文件不是很大,但整体数据量很大。
答案 0 :(得分:1)
我会做这样的事情:
通过迭代器将目录或目录集中的文档流式传输到solr:
HttpSolrServer server = new HttpSolrServer();
Iterator<SolrInputDocument> iter = new Iterator<SolrInputDocument>(){
public boolean hasNext() {
boolean result ;
// set the result to true false to say if you have more documensts
return result;
}
public SolrInputDocument next() {
SolrInputDocument result = null;
// construct a new document here and set it to result
return result;
}
};
server.add(iter);
请在此处查看此方法和其他方法:http://wiki.apache.org/solr/Solrj#Streaming_documents_for_an_update
答案 1 :(得分:1)
TikaEntityProcessor可与FileListEntityProcessor一起使用。
数据-config.xml中
<dataConfig>
<dataSource name="bin" type="BinFileDataSource"/>
<document>
<entity name="f" dataSource="null" rootEntity="false"
processor="FileListEntityProcessor" transformer="TemplateTransformer"
baseDir="L:/Documents/65923/"
fileName=".*\.*" onError="skip" recursive="true">
<field column="fileAbsolutePath" name="path" />
<field column="fileSize" name="size" />
<field column="fileLastModified" name="lastmodified" />
<entity name="tika-test" dataSource="bin" processor="TikaEntityProcessor" url="${f.fileAbsolutePath}" format="text" onError="skip">
<field column="Author" name="author" meta="true"/>
<field column="title" name="title" meta="true"/>
<field column="text" name="content"/>
</entity>
</entity>
</document>
</dataConfig>