[英]Spring Beans configuration for Lucene
因此,我一直在通过混合Spring Beans xml配置和Lucene来测试我的一个小实验(或者,我认为这更像是我懒于将所有这些实际放入Java代码)。
基本上,不必将所有前提条件都编写成一个IndexWriter,而是将它的一个实例注入到一个类中。 (是的,我很懒)
但是,尝试通过bean实例化SimpleFSDirectory时遇到了一些困难,特别是,我希望Lucene索引位于相对于Web应用程序的路径中。 (也许是/ WEB-INF / lucene-indexes之类的东西)
我当前的配置是这样的:
<bean id="standardAnalyzer" class="org.apache.lucene.analysis.standard.StandardAnalyzer">
<!-- org.apache.lucene.util.Version -->
<constructor-arg>
<value>LUCENE_44</value>
</constructor-arg>
</bean>
<bean id="fileDir" class="java.io.File">
<constructor-arg index="0">
<value>classpath:/test-lucene-store</value>
</constructor-arg>
</bean>
<bean id="directory" class="org.apache.lucene.store.SimpleFSDirectory">
<constructor-arg index="0">
<ref bean="fileDir"/>
</constructor-arg>
</bean>
<bean id="indexWriterConfig" class="org.apache.lucene.index.IndexWriterConfig">
<constructor-arg index="0">
<value>LUCENE_44</value>
</constructor-arg>
<constructor-arg index="1">
<ref bean="standardAnalyzer" />
</constructor-arg>
</bean>
<bean id="indexWriter" class="org.apache.lucene.index.IndexWriter">
<constructor-arg index="0">
<ref bean="directory" />
</constructor-arg>
<constructor-arg index="1">
<ref bean="indexWriterConfig" />
</constructor-arg>
</bean>
我的测试日志说classpath:**
不是有效的路径,但是,如果我仅使用/lucene-store
,则在D://lucene-store
创建索引(远离预期目标)
你们中有人知道达成目标的方法吗?
使用java.io.File实现文件系统位置,而不是classpath
条目。 当然,您始终可以引用展开的.war并执行以下操作(在Tomcat上):
<value>#{ systemProperties['catalina.base'] }/webapps/myapp.war/WEB-INF/lucene-store</value>
但是,更灵活的方法是将值保留在外部位置(例如,属性文件):
<value>#{ myConfig['lucene-store-root'] }</value>
...或者甚至将java.io.tmpdir
系统属性用于测试目的:
<value>#{ systemProperties['java.io.tmpdir'] }/lucene-store</value>
您还可以切换到其他Directory实现( 示例 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.