gpt4 book ai didi

java - Lucene 的 Spring Bean 配置

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:13 24 4
gpt4 key购买 nike

所以我一直在通过混合 Spring Beans xml 配置和 Lucene 来测试我的一个小实验(或者我认为这更像是我懒惰将所有这些实际放入 java 代码中)。

基本上,我不必编写创建 IndexWriter 的所有先决条件,而只需将其实例注入(inject)到类中。 (是的,我就是这么懒)

但是,我在尝试通过 beans 实例化 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实现文件系统位置,而不是类路径条目。当然,您始终可以引用分解的 .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>
<小时/>

您还可以切换到不同的目录实现 ( example )。

关于java - Lucene 的 Spring Bean 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18503581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com