`
shixin42
  • 浏览: 55218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

senseidb中对zoie的整合

 
阅读更多
com.senseidb.conf.SenseiServerBuilder.buildCore()方法中开始对zoie进行实例化:

1 构建ZoieConfig实例:
ZoieConfig会设置Analyzer, Similarity实例,这些基本的lucene对象可以在sensei配置文件中自定义。设置batchSize, batchDelay, maxBatthSize, rtIndexing, skipBadRecord, freshness等属性也是在sensei配置中可配的。

2. 构建SenseiZoieFactory
sensei自己实现了一个默认的解释器,实现了ZoieIndxableInterpreter(用于把DataProvider产生的DataEvent转换成lucene Document)

调用constructZoieFactory方法创建SenseiZoieFactory实例:
private SenseiZoieFactory<?> constructZoieFactory(
ZoieConfig zoieConfig,
List<FacetHandler<?>> facetHandlers,
List<RuntimeFacetHandlerFactory<?, ?>> runtimeFacetHandlerFactories,
ZoieIndexableInterpreter interpreter) {
2.1
sensei自己实现了一个默认的IndexReader包装器
SenseiIndexReaderDecorator decorator = new SenseiIndexReaderDecorator(facetHandlers, runtimeFacetHandlerFactories);
这个装饰器整合了linkedIn另一个开源项目Bobo. Bobo提供一中结构化的模式来对索引进行查询。

2.2
构建SenseiZoieSystemFacotry实例
SenseiZoieSystemFactory senseiZoieFactory = new SenseiZoieSystemFactory(idxDir, dirMode, interpreter, decorator, zoieConfig);
idxDir是索引所在的目录
dirMode是目录类型,默认是simple

2.3
实例化一个lucene的Filter实例purgeFilter, 过滤器,是根据时间进行过滤。同样是可配的

2.4
可选的IndexCopier,可能用来实现索引备份的。?
}

3. 在实例化SenseiCore的时候,会传递SenseiZoieSystemFactory实例



SenseiCore在启动的时候,会根据所在node的partition数量,建立相对应的IndexDirecory,每个目录,都有一个Zoie实例进行管理。
for (int part : _partitions){
Zoie<BoboIndexReader,?> zoieSystem = _zoieFactory.getZoieInstance(_id,part);
...
}
所以在sensei.properties中指定的索引目录只是一个父目录,sensei会根据nodeId和partitionId进行子目录,子索引管理。

Sensei会注册每个Zoie实例,通过JMS进行通信。

	public void start() throws Exception {
		if (_started)
			return;
		for (int part : _partitions) {

			Zoie<BoboIndexReader, ?> zoieSystem = _zoieFactory.getZoieInstance(
					_id, part);

			// register ZoieSystemAdminMBean

			String[] mbeannames = zoieSystem.getStandardMBeanNames();
			for (String name : mbeannames) {
				JmxUtil.registerMBean(zoieSystem.getStandardMBean(name),
						"zoie-name", name + "-" + _id + "-" + part);
			}

			if (!zoieSystems.contains(zoieSystem)) {
				zoieSystem.start();
				zoieSystems.add(zoieSystem);
			}

			_readerFactoryMap.put(part, zoieSystem);
		}
		try {
			pluggableSearchEngineManager.start(this);
			logger.info("initializing index manager...");
			if (_indexManager != null) {
				_indexManager.initialize(_readerFactoryMap);
			}
			logger.info("starting index manager...");
			if (_indexManager != null) {
				_indexManager.start();
			}

			logger.info("index manager started...");
		} catch (Exception e) {
			logger.error(
					"Unable to start indexing manager, indexing not started...",
					e);
		}
		_started = true;
	}

       
0
2
分享到:
评论

相关推荐

    Zoie实时搜索架构

    Zoie实时搜索架构,作为一款基于Apache Lucene构建的系统,旨在提供分布式、实时和高性能的搜索服务,满足了大数据背景下对搜索效率的高要求。尽管Zoie的文档可能不够详尽,但其核心技术和优势依然值得我们深入探讨...

    Lucene5学习之增量索引(Zoie)

    在实际应用中,每当有新的person数据插入或更新时,Zoie会监控到这些变化,然后对这些数据进行增量索引,确保索引始终保持最新状态。 总结起来,Lucene5学习之增量索引(Zoie)涉及到的关键技术点包括: 1. 基于...

    zoie, 实时搜索/索引系统.zip

    zoie, 实时搜索/索引系统 什么是 ZoieZoie是用Java编写的实时搜索/索引系统。维基维基在以下位置可用:http://linkedin.jira.com/wiki/display/ZOIE/Home问题问题在以下位置跟踪:http://link

    lucene5+zoie实现近实时索引

    在实际应用中,Lucene 5 + Zoie的组合特别适合于那些需要快速响应新数据、并且对数据新鲜度要求高的场景,如新闻网站、社交媒体、电子商务平台等。开发者可以通过API接口,轻松地将新数据接入到Zoie系统,实现近实时...

    ewhine_search:ewhine 搜索系统使用 zoie

    The ewhine search system use zoie. #安装 git clone :jimrok/ewhine_search.git cd ewhine_search java -jar server.jar 如果在Mac的控制台下,使用 java -Dfile.encoding=UTF-8 -jar server.jar #索引 在ewhine_...

    吴一男:网易通用搜索优化之道

    - 系统的整合与管理能力被提及,以及Zoie实时索引系统的特点和作用。 3. 搜索的云服务化(NCS) - 讨论了将搜索服务迁移到云环境下的优势,如提供轻量级运维、简化使用与运维过程、以及资源的弹性利用和共享。 -...

    lucene of lietu

    **Document**:在 Lucene 中,Document 代表一条记录,它可以包含多个 Field(字段)。例如,一篇文章可能有标题、正文和修改时间等字段。每个 Field 都有其特定的存储和索引属性,如是否分词、是否存储原始内容以及...

    zoieleung0309.github.io

    通过对"zoieleung0309.github.io-master"压缩包的探索,我们可以深入学习以上提到的CSS知识点,并可能发现更多实际应用中的技巧和最佳实践。此外,如果该网站包含源码,还可以研究作者如何运用这些技术构建实际的...

    搜索实时更新系统架构介绍.pptx

    - 数据融合是将来自不同来源的数据整合在一起,去重是确保不重复展示相同信息。重排序和精确控位则用于优化搜索结果,提高用户满意度。 4. **个性化与关联商品**: - 个性化搜索考虑用户的个人偏好,通过学习搜索...

    CSDN TUP第二期:王鹏云演讲PPT

    - **Zoie**:基于Lucene构建,来自LinkedIn,适用于中小规模的实时搜索需求。 - **Sphinx**:自1.10-beta版本起支持实时搜索功能,被广泛应用于craigslist、netlog等网站。 通过以上分析可以看出,实时搜索不仅是一...

    垂直搜索-您不知道的秘密 -solr中国-风雨V1.1

    下面将对这些知识点进行详细阐述。 ### 一、5W+1H —— 垂直搜索引擎之开篇 #### 1. Why(为什么要做 —— 原因) - **客观因素**: - 当网站的主要目标是促成交易时,且访问该网站的用户通常是基于明确需求而来...

    j2ee面试考察点.pdf

    以下是对这些知识点的详细说明: **一、Web开发** 1. **MVC(模型-视图-控制器)**:这是一种软件设计模式,用于将业务逻辑、数据与用户界面分离。模型处理数据,视图负责展示,控制器协调它们之间的交互。 2. **...

    张琨:教育社交平台的web架构分享

    例如FeedSystem是基于开源的key-value数据库Redis构建的,而Instantsearchserver是基于zoie进行开发的。NoticeSystem则利用了mochiweb的高效通信特性,采用了Erlang编程语言。MQserver使用了RabbitMQ作为基础的异步...

    zoieboyd.github.io

    HTML代码中可能包含了对个人品牌的表述,页面布局的逻辑,以及交互元素的设计。如果存在JavaScript代码,那还涉及到动态功能的实现,如表单处理、动画效果或API交互。不过,具体的细节需要直接查看源代码才能得知。

    计算机网络 实验1 常用网络命令的使用

    计算机网络 实验1 常用网络命令的使用 1. 实验目的 (1) 掌握 ping、ipconfig、tracert、netstat、ARP、nslookup、net 等命令含义和基本用法; (2) 学会运用 ping、ipconfig、tracert、netstat、ARP、nslookup、net ...

    web前端+javascript+模态框

    javascript封装一个模态框:头(标题、关闭按钮)、内容、尾(操作按钮:取消和确定)。标题可以自定义,默认值是“标题”; 内容区域可以是文本或者富文本,操作按钮可以控制显隐和显示文案; ...

    计算机网络 实验2 Wireshark的安装与基本操作

    实验2 Wireshark的安装与基本操作 1. 实验目的 学习 Wireshark 的基本操作,抓取和分析有线局域网的数据包,熟悉一些应用层命令和协议。

    javascript写一个页码器,包括切换页码、分页、上一页/下一页、省略页码等功能

    当表格数据太多时,通常需要做成分页。本资源使用javascript实现了一个页码器,满足常规要求:切换页码、分页、上一页/下一页、页码超出时显示省略号,点击省略号往前/后显示几个隐藏的页码,使用方法见...

Global site tag (gtag.js) - Google Analytics