senseidb使用手记

标签: 架构研究 senseidb | 发表时间:2012-03-13 18:55 | 作者:54chen
出处:http://www.54chen.com

以下内容由 [五四陈科学院]提供

linkedin, senseidb
下载

https://github.com/downloads/linkedin/sensei/sensei-1.0.0-release.tar.gz

这个版本是2012年1月份发布的,如果您看到此文时时间太久,请到他们的官方网站去寻找:http://senseidb.com

下载kafka
kafka:由linkedin开源的高吞吐量的消息系统。

http://people.apache.org/~nehanarkhede/kafka-0.7.0-incubating/kafka-0.7.0-incubating-src.tar.gz

下载中文分词包IKAnalyzer

http://code.google.com/p/ik-analyzer/downloads/list

编译sensei
tar zxvf sensei-1.0.0-release.tar.gz
cd sensei-trunk
./bin/build.sh 或者 mvn package 要是没有maven客户端,需要自行安装(ubuntu下直接apt-get install maven)

编译kafka
tar zxvf kafka-0.7.0-incubating-src.tar.gz
cd kafka-0.7.0-incubating-src/
./sbt
update
pacakge

编译IKA
新建一个jar包,里面只有一个类,内容如下:

  1. public class IKAnalyzerFactory implements SenseiPluginFactory<IKAnalyzer> {    
  2.     @Override    
  3.     public IKAnalyzer getBean(Map<String, String> initProperties, String fullPrefix, SenseiPluginRegistry pluginRegistry) {    
  4.         return new IKAnalyzer();    
  5.     }    
  6. }    


配置sensei的sensei.properties

重要的几点:
1)zookeeper的url:
sensei.cluster.url=zookeeper.n.miliao.com:2181
2)IKA的class设置:
sensei.index.analyzer.class = com.chen.IKA.IKAnalyzerFactory
3)kafka所使用的声明:
sensei.gateway.class=com.senseidb.gateway.kafka.KafkaDataProviderBuilder
sensei.gateway.kafka.zookeeperUrl=zookeeper.n.miliao.com

#下面的topic很关键,消息系统中用topic区别不同的消息
sensei.gateway.kafka.topic=hotTopic
#ProducerData生成时,也应该叫hotTopic

启动sensei
略去了设置schema,可参考 http://www.54chen.com/java-ee/scalable-reltime-search-senseidb.html.

cd sensei-trunk
bin/start-sensei-node.sh example/xxx/conf

(所有的使用的jar,比如说kafka\IKA及其依赖的包,都扔到conf/ext下)

配置kafka的server.properties
关键的一点:
1)设置kafka使用的zookeeper地址:

zk.connect=zookeeper.n.miliao.com:2181

启动kafka

cd kafka-0.7.0-incubating-src
nohup bin/kafka-server-start.sh config/server.properties &


[如果你的schema定义无误,那么到这里你就可以通知kafka有消息进入,sensei就会自动开始消费这些消息进行索引等过程]

在具体业务中传入数据参考前文: http://www.54chen.com/java-ee/scalable-reltime-search-senseidb.html


发起搜索

  1. public static JSONArray doSearch(String key, int limit, int offset, String senseiServer) throws JSONException {  
  2.         SenseiClientRequest senseiRequest = SenseiClientRequest.builder().query(Queries.stringQuery(key)).paging(limit, offset)  
  3.                 .fetchStored(true).build();   
  4.         SenseiResult senseiResult = new SenseiServiceProxy(senseiServer, 8080).sendSearchRequest(senseiRequest);  
  5.         List<SenseiHit> list = senseiResult.getHits();  
  6.         JSONArray l = new JSONArray();  
  7.         for (int i = 0; i < list.size(); i++) {  
  8.             SenseiHit hit = list.get(i);  
  9.             l.put(new JSONObject(hit.getSrcdata()));  
  10.         }  
  11.         return l;  
  12.     }  

____EOF____
2012.3.13 version 1



想快点找到作者也可以到Twitter上留言: @54chen
或者你懒得带梯子上墙,请到新浪微博: @54chen

相关 [senseidb] 推荐:

senseidb使用手记

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. 这个版本是2012年1月份发布的,如果您看到此文时时间太久,请到他们的官方网站去寻找:http://senseidb.com. kafka:由linkedin开源的高吞吐量的消息系统. 下载中文分词包IKAnalyzer. ./bin/build.sh 或者 mvn package 要是没有maven客户端,需要自行安装(ubuntu下直接apt-get install maven).

分布式实时搜索方案介绍-senseidb

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. zoie:由linkedin开源的建立在lucene之上提供实时索引的系统. 它利用两 个内存索引一个硬盘索引来实现实时搜索. bobo-browse:由linkedin开源的基于lucene的分类浏览搜索系统. zookeeper:一个分布式的,开放源码的分布式应用程序协调服务,常用来做配置服务.