如何配置compass的索引位置为相对路径
来源:互联网 发布:相宜本草红景天 知乎 编辑:程序博客网 时间:2024/06/09 08:52
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的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的索引位置为相对路径
- 如何配置compass的索引位置为相对路径
- log4j.properties如何将输出的文件路径配置为相对路径?
- source insight3.5的使用技巧1——sourceinsight下工程文件位置如何显示为相对路径
- Windows 中如何创建一个指向某相对路径的快捷方式(即快捷方式的目标路径为某相对路径)
- log4j相对路径的配置
- JAVAWEB相对路径的配置
- log4j相对路径的配置
- 如何控制层的相对位置
- Java中如何以类为相对路径或以库为相对路径定位资源
- Java中如何以类为相对路径或以库为相对路径定位资源
- 配置compass的步骤
- 使用百度编辑器插入的地图地址如何存为相对路径
- 用相对路径设定服务器端数据库位置的方法
- Log4J配置相对路径的分析
- VS中相对路径的配置
- 如何找到配置文件的相对路径
- JSP中如何解决相对路径的??
- 支付宝
- yum命令的理解及相关设置
- Base64编码的实现(c++) 仅编码部分
- 关于好易网采用GWT技术开发网站的总结
- C++中的引用
- 如何配置compass的索引位置为相对路径
- Wpf,常用控件说明总结(转)
- OpenGL --文件读取(c++)
- 各种通信方式对比
- NoSQL 数据库学习资料汇总
- Java常见面试题
- 微软 界面 一流。
- 5分钟搞定内存字节对齐
- sql语句技巧(转)