`

如何配置compass的索引位置为相对路径

阅读更多

Compass是对lucene进行封装的java项目,使得在spring,hibernate这种环境下非常容易的实现全文检索,也极大的提高了效率。所以在myblog里面我也使用了compass作为全文索引。
从Compass的samples里面的petclinic里面可以找到Compass的配置。

    <bean id="compass" class="org.compass.spring.LocalCompassBean">
        <property name="resourceLocations">
            <list>
                <value>classpath:org/compass/sample/petclinic/petclinic.cmd.xml</value>
                <value>classpath:petclinic.cpm.xml</value>
            </list>
        </property>
        <property name="compassSettings">
            <props>
                <prop key="compass.engine.connection">file://${user.home}/compass/petclinic</prop>
                <prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
            </props>
        </property>
        <property name="transactionManager">
            <ref local="transactionManager" />
        </property>
    </bean>

这里配置的索引位置是用的系统的绝对路径,可能大部分的人还是希望索引能放到项目的一个子目录里面,就是使用相对路径的方式。但是如果直接修改

<prop key="compass.engine.connection">file://${user.home}/compass/petclinic</prop>


<prop key="compass.engine.connection">/compass/petclinic</prop>

这样是不行的。刚开始我也是这样修改的。其实我们看一下LocalCompassBean的源代码就知道怎么做了。

        if (this.compassSettings != null) {
            config.getSettings().addSettings(this.compassSettings);
        }
       ......
        if (config.getSettings().getSetting(CompassEnvironment.CONNECTION) == null && connection != null) {
            config.getSettings().setSetting(CompassEnvironment.CONNECTION, connection.getFile().getAbsolutePath());
        }


  这里可以看到如果你配置compassSettings的时候配置过compass.engine.connection的话compass就会使用你配置的值也就是绝对路径。如果你没有配置就会去读connection的值,而connection的类型是org.springframework.core.io.Resource,这个是spring封装的资源类,提供很多种访问方式 file classpath ,这里就可以使用相对路径了。去掉compassSettings里面的compass.engine.connection 的配置,加上connection的配置就可以实现相对路径了。比如myblog里面的配置

    <bean id="compass" class="org.compass.spring.LocalCompassBean">
        <property name="resourceDirectoryLocations">
            <list>
                <value>classpath:com/jdkcn/compass</value>
            </list>
        </property>
        <property name="connection">
            <value>/lucene/indexes</value>
        </property>
        <property name="compassSettings">
            <props>
                <prop key="compass.transaction.factory">
                    org.compass.spring.transaction.SpringSyncTransactionFactory
                </prop>
            </props>
        </property>
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
    </bean>

webapp启动之后compass就会在你的应用的/lucene/indexes目录下建立索引了。

文澜阁社区

分享到:
评论

相关推荐

    compass索引插件demo

    2. **配置Compass**:配置Compass连接到数据库,定义需要索引的实体类。 3. **配置Hibernate**:设置Hibernate监听Compass事件,使得数据修改时自动更新索引。 4. **配置Spring**:将Compass和Hibernate集成到...

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

    2. **配置Spring**:创建Spring配置文件,配置Compass相关的bean,包括索引管理器(IndexManager)、查询执行器(QueryExecutor)等。 3. **实现服务层**:创建服务层接口及其实现类,利用Spring的注入机制注入...

    Compass_入门指南

    其中,*.cmd.xml 文件用于定义 common meta data,*.cpm.xml 文件提供了 POJO 到 common meta data 的映射,而 *.cfg.xml 文件定义了 Compass 的 Index 存放路径、搜索引擎分词等相关信息。 Annotation vs. XML ...

    compass搜索引擎技术

    通过添加特定的注解或配置,Compass可以在实体的CRUD操作时自动处理索引的更新。 6. **建立索引** 应用启动时,通常会执行一次全量索引,将所有数据导入到Compass中。这可以通过调用Compass的批处理索引API完成。...

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

    然后,配置Compass连接到你的数据源(如MySQL、Oracle等),并指定索引的存储位置。 2. **索引数据**:使用Hibernate的事件监听器或注解,自动将持久化对象转换为Compass文档,建立索引。这一步确保了数据库中的新...

    GPS_COMPASS双模接收机多路径效应分析.pdf

    GPS_COMPASS双模接收机多路径效应分析.pdf

    Compass 的java代码

    首先,你需要配置Compass,指定数据源和索引位置。接着,定义对象-搜索映射文件(`.cmap.xml`),将你的Java类与Lucene字段对应起来。然后,你可以使用Compass的Gps接口来启动和停止索引服务,以及执行搜索操作。 *...

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

    2. **配置ORM集成**:配置Compass与ORM框架的连接,指定数据源和索引存储位置。 3. **定义映射**:为每个需要索引的实体类定义映射,指定哪些字段参与索引,如何分词等。 4. **初始化Compass**:启动Compass实例,...

    compass完整可用项目

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

    mongodb安装包和compass

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

    java搜索 compass资料

    具体配置项取决于项目的需求,例如索引存储位置、索引更新频率等。 #### 五、Compass 高级特性 Compass 提供了许多高级特性,比如支持复杂查询语法、高可用性集群部署等。此外,Compass 还支持多种数据库,允许...

    简单的compass示例源码

    1. **Compass配置**:如何设置Compass的配置文件,包括数据源、索引位置、分析器等。 2. **对象绑定**:理解如何将应用程序中的对象与Compass索引关联,以便自动创建和更新索引。 3. **索引创建**:学习如何在程序...

    Compass.rar

    2. **配置文件**:可能包含Compass的配置XML,定义了搜索引擎的设置,如索引的位置、分析器的选择等。 3. **测试用例**:JUnit测试类,用于验证Compass功能的正确性,包括索引构建、查询执行和结果验证。 4. **依赖...

    Compass与ssh框架整合

    1. **安装与配置Compass**:下载并添加Compass库到项目的类路径,然后在配置文件(如`compass.cfg.xml`)中指定索引存储位置,以及需要索引的数据源。 2. **配置SSH框架**:在Spring配置文件中定义Compass相关的...

    基于Lucene的搜索引擎框架Compass教程

    1. **初始化**:创建并配置Compass实例,指定数据源和存储路径。 2. **对象映射**:定义对象与Lucene文档的映射,包括字段类型、分析器等。 3. **索引数据**:通过Compass的API将ORM框架中的对象自动或手动转换为...

    compass annotation关联关系

    Compass 是一个全文搜索引擎库,它是对 Lucene 的封装,为 Java 应用提供了一种简单易用的接口。在 Compass 中,Annotation 是一种元数据注解方式,它允许开发者在对象模型上直接定义搜索映射,使得对象与索引之间的...

    compass 全文搜索

    2. **Compass配置**:设置数据源、映射文件、索引位置等,创建并启动Compass实例。 3. **对象映射**:学习如何定义对象的属性与Lucene字段的对应关系,包括字段类型、是否存储、是否索引等。 4. **索引操作**:...

    使用compass+lucene实现简单的全文检索功能

    2. **配置 Compass**:创建一个 Compass 配置文件,定义搜索引擎的连接参数,例如目录或数据库的位置,以及要索引的数据源。还可以设置分析器(Analyzer),用于处理文本数据。 3. **创建索引**:使用 Compass 提供...

    COMPASS介绍

    3. ***.cfg.xml** 文件用于配置COMPASS的索引存放路径、搜索引擎分词等信息。 虽然XML配置方式提供了极大的灵活性,但在实际开发过程中,注解配置方式因其简洁性而更受欢迎。特别是当项目中使用了Spring框架时,...

    Compass与Struts2SpringHibernate的整合示例

    2. 配置Compass:在Spring配置文件中定义Compass的bean,包括设置数据源、索引路径、搜索引擎类型等。 3. 配置Hibernate:在Hibernate的配置中,开启二级缓存并指定使用Compass作为缓存提供者。 4. 映射实体类:在...

Global site tag (gtag.js) - Google Analytics