`
zhangljerry
  • 浏览: 144355 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于compass如何重建索引

 
阅读更多
当重建索引时,先建备份索引,然后通过操作替换原索引文件.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)是会产生异常现象,主要和搜索时的异常
建议删除原索引,然后重命名为原索引
分享到:
评论
1 楼 kekeemx 2008-03-04  
你好,我最近也在研究Compass做一个站内搜索的项目,
有些问题想与你交流一下可以么.
我的MSN是:kekeemx@hotmail.com

相关推荐

    compass索引插件demo

    2. **实时索引**:Compass支持实时索引,意味着数据的修改无需手动触发索引更新,索引会随着数据的改变自动更新。 3. **GEO空间搜索**:Compass提供了对地理位置数据的搜索支持,可以方便地进行距离查询等地理空间...

    ssh+compass实现站内搜索分页.rar

    2. **索引数据**:使用Hibernate的事件监听器或注解,自动将持久化对象转换为Compass文档,建立索引。这一步确保了数据库中的新数据能够被搜索。 3. **搜索接口**:在Struts2的Action类中,创建一个处理搜索请求的...

    基于Compass2.2与Spring 结合建立索引的实例

    ### 基于Compass2.2与Spring结合建立索引的实例 #### 一、Compass简介 Compass是一个开源的.NET和Java框架,它为应用程序提供了完整的文本搜索功能。该框架支持多种搜索引擎(如Elasticsearch, Solr等),使得开发...

    compass搜索引擎技术

    Compass的主要目标是将全文索引能力无缝地融入到现有的业务应用程序中,尤其对于那些使用ORM(对象关系映射)如Hibernate的应用程序。在本篇讨论中,我们将深入探讨如何利用Compass技术,结合Eclipse开发环境和MySQL...

    完整compass工程+建库sql+学习资料

    Compass和Lucene是两个在Java世界中非常重要的搜索引擎框架,它们在处理文本检索和全文索引方面具有强大的功能。这个压缩包包含了一个完整的Compass工程,MySQL的建库SQL脚本,以及相关的学习资料,非常适合想要深入...

    Compass 的java代码

    2. **自动索引管理**:Compass能自动跟踪对象的变化,并在需要时更新或删除对应的Lucene索引,简化了索引维护。 3. **缓存支持**:Compass提供了缓存机制,可以缓存搜索结果,提高性能。同时,它也支持对搜索索引的...

    Compass全文检索系列之一:Compass入门

    2. **动态索引更新**:当数据库中的数据发生变化时,Compass能够自动检测并更新对应的索引,确保检索结果的实时性。 3. **多层缓存**:Compass使用了多种缓存机制,包括查询结果缓存、元数据缓存和字段数据缓存,...

    compass完整可用项目

    2. **配置文件**:如`compass.conf`,可能定义了Compass的配置,如索引位置、连接到的数据源等。 3. **jar包**:项目依赖的各种库,包括Compass、Lucene、SSH框架和其他必需的第三方库。 4. **SQL脚本**:用于初始化...

    Compass原理深入学习笔记

    - Compass相当于Hibernate的SessionFactory,负责创建和管理索引。 - CompassSession类似Hibernate的Session,管理搜索引擎数据,包括检索和索引操作。 - CompassTransaction类似于Hibernate的transaction,处理事务...

    compass annotation关联关系

    在 Compass 中,Annotation 是一种元数据注解方式,它允许开发者在对象模型上直接定义搜索映射,使得对象与索引之间的关系更加清晰,简化了搜索引擎的集成工作。 一、Compass Annotation 概述 Compass Annotation ...

    compass-2.2.0.zip

    4. **实时索引**:Compass支持实时索引,意味着当数据库中的数据发生变化时,相应的搜索索引会自动更新,保持数据的同步性。 5. **元数据支持**:Compass允许在索引中存储额外的元数据,这在进行复杂查询或实现...

    mongodb-compass-1.17.0-win32-x64 MongoDB可视化工具Compass

    Compass允许用户直接在界面上操作索引,包括单键索引、复合索引、唯一性索引等,同时提供性能分析以帮助选择最佳索引策略。 5. 数据导入导出:用户可以方便地将数据从CSV或JSON文件导入到MongoDB,或者将数据库内容...

    compass_使用详解.pdf compass_教程 compass_试用案例

    ### Compass 使用详解 #### 一、Compass 概述 Compass 是一款开源的 Java 库,用于简化 Lucene 的使用。它通过提供类似于 Hibernate 的对象关系映射(ORM)功能,使得开发者能够更加轻松地将 Java 对象映射到 ...

    java搜索 compass资料

    这通常包括设置Compass的配置文件(如`compass.cfg.xml`),以及定义索引和搜索策略等。具体配置项取决于项目的需求,例如索引存储位置、索引更新频率等。 #### 五、Compass 高级特性 Compass 提供了许多高级特性...

    mongodb安装包和compass

    通过Compass,用户可以轻松地浏览和操作数据,查看索引,优化查询性能,以及进行数据导入导出等操作。 在安装MongoDB之前,你需要确保你的系统满足以下硬件和软件要求: 1. 操作系统:MongoDB支持多种操作系统,...

    compass_src

    如果没有Compass,我们一般会在每天深夜重建一次索引。相比Compass的做法, 一来反应迟缓,平均延时半天; 二来效率没有Compass高。如果采用完全重建索引,效率就不用说了。如果进行增量索引,就要增加一个字段,...

    compass 全文搜索

    2. **实时索引**:当数据库中的数据发生变化时,Compass能够自动或手动更新相关的索引,保持搜索结果与数据库内容同步。 3. **高级查询API**:Compass提供了一套高级的查询API,包括布尔查询、短语查询、模糊查询、...

    mongodb compass1.15.1官网版 免安装直接使用

    5. 索引管理:用户可以通过Compass创建、修改和查看索引,以提高查询速度。 6. 数据导入导出:Compass支持数据的导入和导出功能,可以将数据导出为JSON或CSV格式,或者从这些格式导入数据到MongoDB。 关于压缩包中...

    基于Luncene的compass框架详解-java

    2. **配置环境**: 在项目中引入Compass及相关jar包,进行必要的环境配置,如设置搜索索引存储位置、初始化Compass环境等。 3. **实体类标注**: 使用Compass提供的注解如`@Searchable`、`@SearchableId`、`@...

    Compass技术文档

    4. **数据索引**:通过调用Compass API将数据添加到索引中。 5. **执行搜索**:利用Compass提供的API执行搜索操作,获取结果集并进行相应的业务逻辑处理。 以上是Compass的基本使用方法和步骤。通过这种方式,...

Global site tag (gtag.js) - Google Analytics