繁体   English   中英

Lucene的Spring Bean配置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM