Archive for April, 2009

Lotus Connections – 搜索

Saturday, April 18th, 2009

从07年第一个版本开始,Lotus Connections就提供了搜索功能 – 很明显这应该是social software的最基本功能。2.0版本以前的实现是每个模块使用Lucene来做全文索引(索引调度也由各模块独立实现)。 从2.0开始,我们开始支持global search,也就是用户登陆到“主页”后,可以在一个独立的搜索界面中同时搜索多个模块(如博客、书签等)。从实现角度看,global search机制稍有不同。首先,与各模块的索引调度类似,它也会定期的到各个模块爬内容,不同的是它的“爬”是通过发出一个HTTP请求(通过basic authentication指定搜索管理员帐号信息),收到请求的模块将返回一个XML格式的数据结果(我们称之为“seedlist”)。Global search在收到seedlist的结果后在本地重新构建索引(一个经过IBM扩展过的Lucene实现),并提供统一界面的搜索。这样用户可以不用在多个模块之前切换就能实现统一搜索。由此带来的一个新问题是,用户在模块内搜索的结果和在global search中搜索的结果不一致,产生的原因一个是因为使用的索引模块实现不一样;另外一个原因是如果在索引周期内用户数据发生了变化,独立索引和全局索引也会产生数据不一致。

从2.5开始,Lotus Connections搜索的一个最大变化是放弃了各个模块内自己的索引而统一使用全局索引。通过调用EJB或者REST API,用户即可以在单一模块进行上下文相关搜索(如在Dogear里只搜书签),也可以做跨模块索引。所有的索引任务(爬、构建索引、查询服务和API )全部由global search负责。这样,各模块省去了独立实现搜索的任务,而搜索结果也实现了统一。

最近有不少做客户项目的同事问用OmniFind对Lotus Connections进行搜索的可能性。答案是:可以。这个功能从Lotus Connections 2.0就已经提供。具体在OmniFind上的配置方法见:http://www-01.ibm.com/support/docview.wss?uid=swg27013527&aid=1