`

如何配置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目录下建立索引了。

分享到:
评论

相关推荐

    mongodb安装包和compass

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

    Compass学习文档1

    这是 Compass 的配置文件,指定了搜索引擎的连接(在这里是相对路径 `target/test`),以及映射文件的位置。`&lt;mapping&gt;` 标签用于指定每个对象的映射文件,这里是 `Article.cpm.xml`。 3. `Article.cpm.xml`: 这...

    Lucene入门指南

    此段代码展示了如何索引文件的路径、文件修改日期以及文件内容。通过这些基本信息,Lucene 可以为后续的查询提供高效的数据检索服务。 通过以上介绍,我们不仅了解了 Lucene 的基本概念、与相关项目的联系,还深入...

    MongoDB数据库

    3. **配置**:编辑`mongod.conf`配置文件,设置数据文件路径、端口、日志文件位置等。 4. **启动和验证**:运行`mongod`命令启动MongoDB服务,并使用`mongo`命令进入MongoDB shell,验证安装是否成功。 MongoDB的...

    mongodb数据库安装包

    3. 配置MongoDB服务,包括设置数据文件路径、日志文件路径、端口号等。 4. 启动MongoDB服务,并使用`mongo`命令行工具进行交互。 在安装完成后,可以通过MongoDB的管理工具,如`MongoDB Compass`,进行数据可视化...

    mongodb安装文件

    默认设置下,服务名为“MongoDB”且数据存储在“C:\data\db”路径下。如果需要自定义,可以在“Advanced”(高级)选项中设置。 4. **安装MongoDB Compass**:MongoDB Compass是一款图形化界面工具,用于可视化...

    Elasticsearch 技术解析与实践

    2. **配置文件调整**:通过编辑`elasticsearch.yml`配置文件来设置集群名称、节点名称、数据存储路径等参数。 3. **启动服务**:在命令行中输入相应的启动命令来启动Elasticsearch服务。 4. **验证安装**:通过访问...

Global site tag (gtag.js) - Google Analytics