发布时间:2014-09-23 20:49:39
结果排序对搜索的重要性可参考Google的发展。一个文档被搜索后的排序主要依靠两个部分:1. 文档的重要性:pageRank主要就是用于计算文档的重要性,在Lucene提供了各类boost让用户自行制定文档的重要性,所以Lucene中文档的重要性需要用户自己实现。2. 查询的相关度:这类主要使用余弦定理,涉及到tf(t,d)跟idf(t).........【阅读全文】
发布时间:2014-09-15 17:33:27
Write相对Read复杂的多,主要有两条线。1. session.write 引发fireWrite事件,经过编码等过滤器的处理,最后将需要写的session写入到flushingSessions中,wakeup相应的Processor线程2. 实际写操作有Processor线程完成,写完后触发messageSent事件。 一. session.write 1. 生成一个WriteRequest.........【阅读全文】
发布时间:2014-09-15 13:19:18
过滤器为Mina之精髓,处IO层与业务层之间,起承上启下之用。可用下图形象表之: 一. 事件 主要处理以下事件:点击(此处)折叠或打开 //连接建立 void sessionCreated(IoSession se.........【阅读全文】
发布时间:2014-09-14 16:50:55
mina为每个session映射到一个NioProcessor,NioProcessor是一个IO处理机,会开启一个线程Processor,也持有一个专门的Selector,将其拥有的Session的OP_READ注册到该Selector上。因为read返回-1表示断开连接,所以这里也需要处理断开事件。代码跟踪如下:点击(此处)折叠或打开private.........【阅读全文】
发布时间:2014-09-14 14:18:37
总的来说,在Acceptor线程的Selector收到OP_ACCEPT事件后,会创建一个NioSession,一个Session表示一个连接。之后它会选择一个NioProcessor处理读写事件。NioProcessor可表示一个IO处理机,用于处理read跟write事件。Mina启动时会创建一个包含ncpus+1个NioProcessor对象的对象池,每个NioProcessor会启动一个Processo.........【阅读全文】