一个简单的实体处理程序,可以用于枚举标准文件系统中的文件列表,它不需要使用DataSource.属性如下:

  • fileName:(必填) 用正则表达式来标记文件名
  • baseDir:(必填) 基础目录,绝对路径.
  • recursive:是否递归文件列表,默认为false.
  • excludes:不包括的文件名的正则表达式
  • newerThan:日期参数,格式: (yyyy-MM-dd HH:mm:ss),它也可以是一个数学日期,如('NOW-3DAYS'),其中的单引号是必填的.也可以是一个有效的变量格式,如(${var.name}).
  • olderThan :日期格式,规则同上.
  • biggerThan:整型参数.
  • smallerThan:整型参数.
  • rootEntity:它一般情况下都是false(除非你只索引文件名).直属于<document>下的实体才是根实体.那就意味着,根实体发出的每一行都会被solr/lucene创建.但是在这种情况下,我们不希望一个文件对应一个文档(document).我们希望生成一个文档(document),每一行的发出都是由下面的实体'x'来完成的.因为实体'f'包含了rootEntity=false,直属实体f下的实体就变成了一个根实体.
  • dataSource:这里不需要数据源,因此可以设置为null.

例1:

<dataConfig>
<dataSource type="FileDataSource" />
<document>
<entity name="f" processor="FileListEntityProcessor" baseDir="/some/path/to/files"
fileName=".*xml" newerThan="'NOW-3DAYS'" recursive="true" rootEntity="false"
dataSource="null">
<entity name="x" processor="XPathEntityProcessor" forEach="/the/record/xpath"
url="${f.fileAbsolutePath}">
<field column="full_name" xpath="/field/xpath" />
</entity>
</entity>
</document>
</dataConfig>

例2:从文件列表中读取文件内容,并将文件名称处理掉文件名后缀.

<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 name="binFile" type="BinFileDataSource" />
<document>
<entity name="f" processor="FileListEntityProcessor" baseDir="D:/solr/source_data/ah/"
recursive="true" fileName=".*.html" rootEntity="false" dataSource="null"
transformer="script:WipOffHtml">
<field column="file" name="title" />
<entity processor="TikaEntityProcessor" name="tika"
dataSource="binFile" url="${f.fileAbsolutePath}" format="text"
transformer="HTMLStripTransformer,RegexTransformer,script:GenerateId">
<field column="id" name="id" />
<field column="text" name="content" stripHTML="true" regex="\t|\r|\n|\s"
replaceWith="" />
</entity>
</entity>
</document>
</dataConfig>

注意:不要丢失rootEntity这个属性.FileListEntityProcessor 产生的隐式字段是:fileDir,file,fileAbsolutePath,fileSize,fileLastModified ,

这些变量在实体x中都是可以使用的.应该注意的是FileListEntityProcessor返回的是文件路径列表,所以子实体必须使用FileDataSource 来获取文件内容.

不当之处,敬请指正!

FileListEntityProcessor的更多相关文章

  1. 1.6.4 Uploading Structured Data Store Data with the Data Import Handler

    1.使用DIH上传结构化数据 许多搜索应用索引结构化数据,如关系型数据库.DIH提供了一个这样的存储并索引结构化数据的机制.除了关系型数据库,solr可以索引来自HTTP的内容,基于数据源如RSS和A ...

  2. Solr DIH dataconfig配置

    1. 配置文件data-config.xml定义了数据库的基本配置,以及导出数据的映射规则,即导出数据库表中对应哪些字段的值,以及对特定字段的值做如何处理 </pre><p>& ...

  3. 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[2]--DIH

    转载:http://quweiprotoss.wap.blog.163.com/w2/ DIH需要在solrconfig.xml中注册,如下: <requestHandler name=&quo ...

  4. Solr Dataimport配置

    参考资料: https://cwiki.apache.org/confluence/display/solr/Uploading+Structured+Data+Store+Data+with+the ...

  5. solr7.7.0搜索引擎使用(三)(添加文件索引)

    众所周知,solr与es的最大区别是,solr可以对pdf,txt,doc等文件生成索引 那我们如何添加文件索引呢? 步骤1.添加core,取名暂且为 coreFile 在bin下执行命令 ./sol ...

  6. solr特点六: DIH (从数据源导入数据)

    在这个结构化数据和非结构化数据的数量都很庞大的年代,经常需要从数据库.XML/HTML 文件或其他数据源导入数据,并使数据可搜索.过去,要编写自定义代码才能创建到数据库.文件系统或 RSS 提要的自定 ...

  7. solr6.6 配置自带中文分词

    1.配置solrconfig.xml solr的自带中文分词包在solr-6.6.0\contrib\analysis-extras\lucene-libs下 修改solrconfig.xml增加 & ...

  8. solr6.6 导入 文本(txt/json/xml/csv)文件

    参照:solr6.6 导入 pdf文件 重点就是三个配置文件 1.建立的data-config.xml 内容如下: <dataConfig> <dataSource name=&qu ...

  9. solr6.6 导入 pdf/doc/txt/json/csv/xml文件

    文本主要介绍通过solr界面dataimport工具导入文件,包括pdf.doc.txt .json.csv.xml等文件,看索引结果有什么不同.其实关键是managed-schema.solrcon ...

随机推荐

  1. cocos2d-x 2.2.5 安卓工程编译的问题

    原址:http://www.cocoachina.com/bbs/read.php?tid=217124 新的cocos2d-x 2.2.5 在使用Eclipse的安卓NDK 9 的编译器进行编译的时 ...

  2. 【原】创建Hive表,分号分隔符“;”引起的异常

    [障碍再现] 在创建支持Map数据结构的Hive表时,抛出如下异常 hive> create table tab_map(name string,info map<string,strin ...

  3. C++11角括号

    [C++11角括号] 标准 C++ 的剖析器一律将 ">>" 视为右移运算符. 但在样板定义式中,绝大多数的场合其实都代表两个连续右角括号. 为了避免剖析器误判,撰码时 ...

  4. Objective-C 学习记录--toches、Motion/Size/Rect/Point/CGFloat/protocol

    - (void)touchesBegan touchesEnd touchesCancelled touchesMoved //代表的是手指在屏幕上的动作,开始 结束 取消 移动 //还有就是代表摇动 ...

  5. OC键值观察KVO

    什么是KVO? 什么是KVO?KVO是Key-Value Observing的简称,翻译成中文就是键值观察.这是iOS支持的一种机制,用来做什么呢?我们在开发应用时经常需要进行通信,比如一个model ...

  6. Python单步调试

    运行 运行python -m pdb test.py (Pdb) 会自动停在第一行,等待调试,这时你可以看看帮助 (Pdb) h 几个关键命令 断点设置 (Pdb)b 10 #断点设置在本py的第10 ...

  7. (剑指Offer)面试题18:树的子结构

    题目: 输入两棵二叉树A和B,判断B是不是A的子结构. 二叉树结构定义如下: struct TreeNode{ int val; TreeNode* left; TreeNode* right; }; ...

  8. (4)html表格

    本节解说 :html的表格 表格: *<table></table> 标签定义 HTML 表格. *简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 t ...

  9. 利用FlashPaper实现类似百度文库功能

    最近需要实现一个类似百度文库的功能,在Google上淘了一段时间,发现FlashPaper还算能够不错的实现此需求. 首先讲下思路: 1>安装FlashPaper: 2>利用java代码将 ...

  10. C#实现Combobox自动匹配字符

    不多说了,如图,应客户要求,下拉框中需要自动匹配字符,可能有些人一早就对此很熟,但相对于我还是首次使用,还是花了一点时间,现记录下来,也希望能帮助大家更好的理解. 首先要设定Combobox的Drop ...