磨刀不误砍柴工

搜索群里经常遇到有刚入门的朋友问一下 Solr 比较常用功能的使用方法,如高亮、集成中文切词、和现有项目集成、怎么使用查询返回的 XML 数据、如何做 Suggest、如何跟现有的应用整合、以及如何使用DIH。。。确实,使用 Solr 快速搭建一个搜索时,首先遇到的就是这些问题,搞定这些问题,一个搜索就出来了。看到大家问这些问题时,很想说暂停下现在翻译的事,去写一些这方面快速使用 Solr 的文章,一则方便大家快速搭建搜索应用,二则大家问这些问题时,可以直接贴网址给大家,能很快吸引很多初学者来这里。后来想想,还是不要这么操之过急,我自己应该先把基础打好,踏实的翻译 Solr 基础功能的文章,把这些基础的东西搞明白了,快速实现一些功能会更加快捷,高手都是在练基本功,乔丹在热身时总在练投篮,其他球员总是在飞来飞去的灌篮。所以我想我也应该继续练基本功,继续学习和翻译 Solr 基础功能。

DIH 之 URLDataSource

这个数据源经常使用 XPathEntityProcessor 来从 file:// 或 http:// 位置来获取内容。

public class URLDataSource extends DataSource<Reader>

这里是一个例子:

&lt;dataSource name=&quot;a&quot;<br />
type=&quot;URLDataSource&quot;<br />
baseUrl=&quot;http://host:port/&quot;<br />
encoding=&quot;UTF-8&quot;<br />
connectionTimeout=&quot;5000&quot;<br />
readTimeout=&quot;10000&quot;/&gt;

这个 URLDataSource 接受以下可选参数:
baseURL:
数据源地址
connectionTimeout:
连接超时,默认值是 5 秒
encoding:
编码
readTimeout:
读取超时,默认值是 10 秒

DIH 之 FileDataSource 数据源

该数据源使用起来跟 URLDataSource 类似,但是这个数据源主要是从磁盘的文件中获取内容。和 URLDataSource 唯一不同的是,访问磁盘文件时需要制定磁盘路径,如下所示:

public class FileDataSource extends DataSource&lt;Reader&gt;

这个数据源接受两个可选参数:
basePath:
用于指定绝对路径前缀
encoding:
文件字符集

DIH 之 FieldReaderDataSource 数据源

当一个数据库字段包含 XML 内容,打算通过 XpathEntityProcessor 来读取内容时,可以像以下
配置那样,设置一个数据源,同时包含
JDBC 和 FieldReader 两个实体:
&lt;dataSource name = &quot;a1&quot; driver=&quot;org.hsqldb.jdbcDriver&quot; /&gt;<br />
&lt;dataSource name=&quot;a2&quot; type=FieldReaderDataSource&quot; /&gt;<br />
&lt;!-- processor for database --&gt;<br />
&lt;entity name =&quot;e1&quot; dataSource=&quot;a1&quot; processor=&quot;SQLEntityProcessor&quot; pk=&quot;docid&quot;<br />
	query=&quot;select * from t1 ...&quot;&gt;<br />
	&lt;!-- nested XpathEntity; the field in the parent which is to be used for<br />
	Xpath is set in the 'datafield attribute inplace of the &quot;url&quot; attribute --&gt;<br />
	&lt;entity name=&quot;e2&quot;<br />
		dataSource=&quot;a2&quot;<br />
		processor=&quot;XPathEntityProcessor&quot;<br />
		dataField=&quot;e1.fieldToUseForXPath&quot;<br />
		&lt;!-- Xpath configuration follows --&gt;<br />
		...<br />
	&lt;/entity&gt;<br />
&lt;/entity&gt;

DIH 之 ContentStreamDataSource 数据源

ContentStreamDataSource 数据源是将 POST 提交过来的数据当做数据源,这个数据源可以被任何 EntityProcessor 的 DataSource 使用。

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress   闽ICP备18020075号-1