当重建索引时,先建备份索引,然后通过操作替换原索引文件.compass的一个解决方案是
把备份索引replace操作原索引文件,方法是
getSearchEngineIndexManager().replaceIndex(SearchEngineIndexManager,SearchEngineIndexManager)
简单code
indexCompass = compass.clone(
new CompassSettings().setSetting(CompassEnvironment.CONNECTION_SUB_CONTEXT, "gpsindex"));
indexCompass.getSearchEngineIndexManager().deleteIndex();
indexCompass.getSearchEngineIndexManager().createIndex();
indexCompassTemplate = new CompassTemplate(indexCompass);
indexCompass.getSearchEngineIndexManager().clearCache();
compass.getSearchEngineIndexManager().replaceIndex(
indexCompass.getSearchEngineIndexManager(), new SearchEngineIndexManager.ReplaceIndexCallback() {
public void buildIndexIfNeeded() throws SearchEngineException {
for (Iterator it = devices.values().iterator(); it.hasNext();) {
// Here we build the new index (based on indexCompass)
CompassGpsDevice device = (CompassGpsDevice) it.next();
device.index();
}
}
});
indexCompass.getSearchEngineIndexManager().deleteIndex();
indexCompass.close();
indexCompass是创建备份索引,compass是原索引的compass
还有根据DualCompassGps的code
boolean stoppedMirrorCompassOptimizer = false;
boolean stoppedIndexCompassOptimizer = false;
if (mirrorCompass != null && mirrorCompass.getSearchEngineOptimizer().isRunning()) {
mirrorCompass.getSearchEngineOptimizer().stop();
stoppedMirrorCompassOptimizer = true;
}
if (indexCompass.getSearchEngineOptimizer().isRunning()) {
indexCompass.getSearchEngineOptimizer().stop();
stoppedIndexCompassOptimizer = true;
}
indexCompass.getSearchEngineIndexManager().clearCache();
indexCompass.getSearchEngineIndexManager().deleteIndex();
indexCompass.getSearchEngineIndexManager().createIndex();
mirrorCompass.getSearchEngineIndexManager().replaceIndex(
indexCompass.getSearchEngineIndexManager(), new SearchEngineIndexManager.ReplaceIndexCallback() {
public void buildIndexIfNeeded() throws SearchEngineException {
// Here, we build the index (into the index compass)
for (Iterator it = devices.values().iterator(); it.hasNext();) {
CompassGpsDevice device = (CompassGpsDevice) it.next();
device.index();
}
}
});
if (stoppedMirrorCompassOptimizer) {
mirrorCompass.getSearchEngineOptimizer().start();
}
if (stoppedIndexCompassOptimizer) {
indexCompass.getSearchEngineOptimizer().start();
}
indexcompass是备份索引的Compass, mirrorCompass是当前索引的Compass
根据实现这code 在替换(红色code)是会产生异常现象,主要和搜索时的异常
建议删除原索引,然后重命名为原索引
分享到:
相关推荐
java ssh 框架集成+ compass插件
基于Compass2.2与Spring 结合建立索引的实例
ssh+compass实现站内搜索分页.rar
如果没有Compass,我们一般会在每天深夜重建一次索引。相比Compass的做法, 一来反应迟缓,平均延时半天; 二来效率没有Compass高。如果采用完全重建索引,效率就不用说了。如果进行增量索引,就要增加一个字段,...
创建Compass时将会链接已经存在的索引或者创建一个新的索引。当Compass创建完后,就可以用compass得到compassSession。compassSession主要是起管理搜索引擎的数据。和hb的SessionFactory一样,compass通常在系统启动...
compass_使用详解.pdf compass_教程 compass_试用案例。
compass教程.pdf
Compass_入门指南 Compass_入门文档
compass文档资料
compass annotation关联关系
mongodb安装包和compass mongodb安装包和compass mongodb安装包和compass 可在node学习过程中使用
COMPASS介绍COMPASS介绍COMPASS介绍COMPASS介绍COMPASS介绍
Compass原理深入学习笔记,对于compass知识的一个梳理,希望对大家有用
Sass和Compass 实战
compass-reference,compass
compass搜索引擎技术 eclipse mysql 实现像google的搜索功能
这个项目是我经过修改的源代码,含有需要的jar和sql
compass 最新的compass,值得下载
Chapter 1, Getting Started with Sass and Compass, explains, in layman's terms, what Sass and Compass are, how they relate, and how to get them installed and ready to use. Chapter 2, Setting Up a Sass ...
最新mangodb compass