nutch的分布式前台由若干数据服务器(server)及一个客户端(Client)组成
nutch的数据服务器实现了以下几个接口:
/** The distributed search protocol. */ public interface Protocol extends Searcher, HitDetailer, HitSummarizer, HitContent {
/** The name of the segments searched by this node. */ String[] getSegmentNames(); }
nutch把整个前台搜索过程分割成Searcher,HitDetailer,HitSummarier,HitContent这几个过程.
Searcher接受的参数是查询字符串和一些参数,如排序方式,返回的是Hits结构,Hits结构包含一个Hit结构的数组,Hit结构包含的主要是一条检索结果的docid和score
HitDetaiiler接受的参数是Searcher返回的Hit数组,返回的是HitDetails的数组,HitDetails除了含有一条检索结果的docid,还包含了lucene的index中除了docid域中之外的其他域,比如url,上下文.在nutch的实现中HitDetailer和Searcher使用相同的lucene index
HitSummarizer接受的参数是HitDetailer返回的HitDetails数组,它返回上下文标红后的结果
HitContent接受的参数也是HitDetailer返回的HitDetails数组,它返回cache的整个网页
nutch的客户端与其数据服务器间通过org.apache.nutch.ipc.RPC进行通讯,该类实现了Method的远程调用,caller端将Method的参数二进制串行化传到callee端,callee执行后把返回值二进制串行化后再返回给caller的服务器,传输通过socket.
这样Server仅需要实现接口Protocol,Client即可远程调用Server端的函数.