2013-08-29 2 views
0

나는 약간의 실험을 테스트 해왔다. (또는 실제로 이것들을 자바 코드에 넣으려면 게으르다.) Spring Beans XML 설정과 Lucene을 혼합하면된다. .Lucene을위한 Spring Beans 설정

기본적으로 IndexWriter를 만들기 위해 모든 필수 조건을 코딩하는 것보다는 클래스의 인스턴스를 주입하는 것입니다. (예, 나는 게으르다.)

그러나 콩을 통해 SimpleFSDirectory를 인스턴스화하는 데 약간의 어려움이있다. 특히 Lucene 색인이 웹 응용 프로그램과 관련된 경로에 있어야한다. . (/ 루씬 - 인덱스 또는 뭔가 어쩌면/WEB-INF)는

내 현재의 구성은 다음과 같이이다 :

<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> 

내 테스트 로그 그러나 단순히 /lucene-store를 사용하는 경우, classpath:** 올바른 경로 아니라고 말하고있다 , 인덱스는 D://lucene-store (대상에서 멀리 떨어진 곳)에 생성됩니다.

목표를 달성하는 방법을 알고 있습니까?

답변

1

java.io.File을 사용하면 classpath 항목이 아니라 파일 시스템 위치가 imples됩니다. 물론, 당신은 항상 분해 .WAR를 참조 (톰캣)에 같은 것을 수행 할 수 있습니다

<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)으로 전환 할 수도 있습니다.

+0

나는이 코드를 사용한다면 : 전쟁에서 배포 할 때 여전히 상대 경로를 따르겠습니까 웹 어플리케이션/myapp.war/WEB-INF/루씬 매장 를? –

+0

어떤 응용 프로그램 서버를 사용하고 있습니까? –

+0

우리는 개발과 배포 모두를 위해 Tomcat을 사용할 것입니다. –

관련 문제