Solr基础总结 - Solr DIH总结

2019-02-18  本文已影响0人  Vekaco
1. DIH术语
2. DIH命令
3. Full Import命令参数
4.propertyWriter属性写入器

propertyWriter元素定义了在delta查询时使用哪种日期格式和地区。这是一个可选配置。直接在DIH配置文件的dataConfig元素下添加该元素。

<propertyWriter dateFormat="yyyy-MM-dd HH:mm:ss" type="SimplePropertiesWriter" directory="data" filename="my_dih.properties" locale="en_US"/>
5. DataSource数据源
<dataConfig>
<dataSource name="a1" driver="org.hsqldb.jdbcDriver" .../>
<dataSource name="a2" type="FieldReaderDataSource"/>
<document>
<entity name="e1" dataSource="a1" processor="SqlEntityProcessor" pk="docid" query="select * from t1...">
<entity name="e2" dataSource="a2" processor="XPathEntityProcessor" dataField="e1.fieldToUseForXPath">
...
</entity>
</entity>
</document>
</dataConfig>
<dataConfig>
<dataSource name="a" type="URLDataSource" baseUrl="http://host:port/" encoding="UTF-8" connectionTimeoit="5000" readTimeout="10000"/>
...
</dataConfig>

1.baseUrl:指定路径名称的baseUrl;
2.connectionTimeout:指定连接超时时间的毫秒数;
3.encoding:响应头中使用的默认编码;
4.readTimeout:指定读操作的超时毫秒数;

6. EntityProcessor实体处理器

实体处理器提取、转换数据并将其添加到Solr索引中。实体一般可以是数据库的视图或表。 每个处理器有自己的属性集合,任何实体都通用的属性如下。

<entity name="product" query="select description,sku,manu from product">
<entity name="manufacturer" query="select id,name from manufacturer" cacheKey="id" cahceLookup="product.manu" cacheImpl="SortedMapBackedCahce"/>
</entity>

1) SqlEntityProcessor:默认处理器,其关联的数据源应为一个JDBC URL。

2) XPathEntityProcessor:该处理器用于索引xml格式数据,其数据源通常是URLDataSource或FileDataSource。XpathEntityProcessor处理器还可以用于下面FileListEntityProcessor来从每个文件中生成索引文档。

实体中每个字段元素都可以有的属性如下。

3) MailEntityProcessor
MailEntiyProcessor使用Java Mail API基于IMAP协议索引email消息。MailEntityProcessor通过使用用户名密码来链接到特定的邮箱,获取每个消息的email头部,然后获取完整的email内容来构造一个索引文档(每个邮件对应一个索引文档)。

<dataConfig>
<document>
<entity processor="MailEntityProcessor" user=“email@gmail.com” password=“password” host="imap.gmail.com" protocol="imaps" 
fetchMailsSince="2009-09-20 00:00:00" batchSize="20" folders="inbox" processAttachement="false" name="sample_entity"/>
</document>
</dataConfig>

在执行full-import之后,MailEntityProcessor处理器会记录上一次导入的时间戳,以便随后的导入操作可以使用fetchMailsSince过滤器保证仅仅只拉取邮件服务器里最新的邮件。这个行为是自动发生的。
4) TikaEntityProcessor
TikaEntityProcessor使用Apache Tika来处理传入的文档。

<dataConfig>
<dataSource type="BinFileDataSource"/>
<document>
<entity name="tika-test" processor="TikaEntityProcessor" url="../contrib/extraction/src/test-files/extraction/solr-word.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>

Processor的可用的数据源类型如下:
1) BinURLDataSource:用于http资源或者磁盘文件;
2)BinContentStreamDataSource:用于通过文件流上传的文件;
3)BinFileDataSource:用于本地文件系统的文件;

5) FileListEntityProcessor
该处理器基本就是一个封装器, 他设计用于生成一系列满足有属性指定条件的文件,然后这些文件可以被传递给另一个处理器,不如XPathEntityProcessor。该处理器的实体信息将内嵌在FileListEntity实体中。它会生成四个隐式的字段:fileAbsolutePath,fileSize,fileLastModified,fileName,它们可用在内嵌的处理器中,该处理器没有使用数据源,该处理器特有的属性如下。

<dataConfig>
<dataSource type="FileDataSource"/>
<document>
<entity name="f" processor="FileListEntityProcessor" fileName=".*xml" newerThan="NOW-30DAYS" recursive="true" rootEntity="false" dagaSource="null" basedir="/my/document/directory">
<entity name="nested" processor="XPathEntityProcessor" forEach="/rootelement" url="${f.fileAbsolutePath}">
<field column="name" xpath="/rootelement/name"/>
<field column="number" xpath="/rootelement/number"/>
</entity>
</entity>
</document>
</dataConfig>

6) LineEntityProcessor
LineEntityProcessor会一次助航读取数据源中的内容,并对每个读取到的行返回名为rawLine的字段,其内容不会被解析,但可以添加转换起来操作rawLine字段的数据,或者创建其他额外的字段。

<entity processor="PlainTextEntityProcessor" name="x" url="http://abc.com/a.txt" dataSource="data-source-name">
<field column="plainText" name="text"/>
</entity>

8) 如何自定义EntityProcessor
当solr内置提供的这些EntityProcessor仍然无法满足你的需求时,你可以通过继承EntityProcessor抽象类或者继承EntityProcessorBase类来实现中自定义EntityProcessor。

上一篇下一篇

猜你喜欢

热点阅读