2013-08-05 2 views
0

나는 pylucne을 사용하여 검색 시스템을 구축하고 있습니다. TREC 데이터를 사용하여 시스템을 테스트하고 있습니다. 인덱서 및 검색 자 코드를 성공적으로 작성했습니다. 이제 TREC 항목을 사용하여 시스템을 평가하고 싶습니다. 이렇게하려면 TREC 형식의 항목 파일에서 쿼리를 읽는 클래스 TrecTopicsReader()이 있습니다. 그러나 해당 클래스의 readQueries(BufferedReader reader)에는 BufferedReader 주제 파일 객체가 전달되어야합니다.피리 부는 사람의 BufferedReader

pylucene에서이를 수행하는 방법. BufferedReader는 pylucene JCC에서 사용할 수 없습니다.

답변

0

일부 답변을 기다린 후, 나는 또한 pylucene 개발자 메일 링리스트에서이 질문을했습니다.
Andi Vajda가 대답했습니다. 나는 앤디를 대신하여이 질문에 답하고있다. 앤디의 말을 인용

다음 PyLucene 메이크에서

는 JCC 호출을 찾아 긴 명령 행에 java.io.BufferedReader의를 추가합니다 (필요에 따라 \ 끝을 잊지 마세요)과 PyLucene를 다시 빌드합니다.

더 많은 정보 :
pyLucene의 메이크 파일에서이 라인 GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \을 찾을 수 있습니다. 여기에는 --package java.io과 같은 줄이 있어야하며, JCC에 추가 할 클래스 (BufferedReader)를 추가하면 Python 코드에서 사용할 수 있습니다.
그런 다음 pylucene을 다시 컴파일하고 설치하십시오. (컴파일 & 설치에 대한 정보는 PyLucene의 설명서에서 찾을 수 있습니다. 또는 this을 사용할 수도 있습니다).

또한 파일에서 BufferedReader 개체를 만들려면 FileReader이 필요합니다. 그래서 그것을 추가하십시오. 그냥 Completenes에 대한

:

GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \ 
      $(JCCFLAGS) --use_full_names \ 
      --package java.lang java.lang.System \ 
           java.lang.Runtime \ 
      --package java.util java.util.Arrays \ 
           java.util.Collections \ 
           java.util.HashMap \ 
           java.util.HashSet \ 
           java.util.TreeSet \ 
           java.lang.IllegalStateException \ 
           java.lang.IndexOutOfBoundsException \ 
           java.util.NoSuchElementException \ 
        java.text.SimpleDateFormat \ 
        java.text.DecimalFormat \ 
        java.text.Collator \ 
      --package java.util.concurrent java.util.concurrent.Executors \ 
      --package java.util.regex \ 
      --package java.io java.io.StringReader \ 
          java.io.InputStreamReader \ 
          java.io.FileInputStream \ 
          java.io.BufferedReader \ 
          java.io.FileReader \ 
      --exclude org.apache.lucene.sandbox.queries.regex.JakartaRegexpCapabilities \ 
      --exclude org.apache.regexp.RegexpTunnel \ 
      --python lucene \ 
      --mapping org.apache.lucene.document.Document 'get:(Ljava/lang/String;)Ljava/lang/String;' \ 
      --mapping java.util.Properties 'getProperty:(Ljava/lang/String;)Ljava/lang/String;' \ 
      --sequence java.util.AbstractList 'size:()I' 'get:(I)Ljava/lang/Object;' \ 
      org.apache.lucene.index.IndexWriter:getReader \ 
      --version $(LUCENE_VER) \ 
      --module python/collections.py \ 
      --module python/ICUNormalizer2Filter.py \ 
      --module python/ICUFoldingFilter.py \ 
      --module python/ICUTransformFilter.py \ 
      $(RESOURCES) \ 
      --files $(NUM_FILES) 

가 충분하지 않습니다 이렇게, 당신은 또한에 포함되지 않은 루씬 벤치 마크 lib 디렉토리를 컴파일 할 필요가 :이 줄을 추가 한 후 내 GENERATE처럼 보일 것이다 TrecTopicsReader이 벤치 마크 api에 있기 때문에 기본적으로 설치 라이브러리가 설치됩니다. 벤치 마크를 컴파일하고 설치하려면 benchmark 폴더가있는 기본 lucene 폴더에서 build.xml을 수정 한 다음 주 메이크 파일에이 jar 파일을 포함시켜 python libs에 egg로 설치해야합니다.

build.xml : 세 가지 수정이 필요합니다. 단순화를 위해 jar-test-framework을 따르고 이것이 있으면 어디든 jar-benchmark에 대한 유사한 패턴을 만들어보십시오.

당신이해야 할 세 가지 변경 사항은 다음과 같습니다

1)<target name="package" depends="jar-core, jar-test-framework, build-modules, init-dist, documentation"/>이로 교체 규칙

<target name="jar" depends="jar-core,jar-test-framework" 
      description="Jars core, codecs, test-framework, and all modules"> 
    <modules-crawl target="jar-core"/> 
    </target> 

를 들어 <target name="package" depends="jar-core, jar-test-framework, jar-benchmark, build-modules, init-dist, documentation"/>

2)로 교체

<target name="jar" depends="jar-core,jar-test-framework, jar-benchmark" 
      description="Jars core, codecs, test-framework, and all modules"> 
    <modules-crawl target="jar-core"/> 
    </target> 
0 여기에 을 또한 세 가지 수정을해야 할 :

3)jar-test-framework

<target name="jar-benchmark"> 
    <ant dir="${common.dir}/benchmark" target="jar-core" inheritAll="false"> 
     <propertyset refid="uptodate.and.compiled.properties"/> 
    </ant> 
    </target> 

MakeFile을라는 목표 후 다음 목표/규칙을 추가합니다. 단순화를 위해 HIGHLIGHTER_JAR을 따르고 BENCHMARK_JAR에 대해 유사한 규칙을 추가하십시오. 당신이 가진 세 가지 변경 사항은하기 :

1)JARS+=$(HIGHLIGHTER_JAR) 찾기와 유사한 방식으로 그 후 JARS+=$(BENCHMARK_JAR)을 추가 할 수 있습니다.

2)HIGHLIGHTER_JAR=$(LUCENE)/build/highlighter/lucene-highlighter-$(LUCENE_VER).jar을 찾고이 줄 다음에 유사한 방법으로 BENCHMARK_JAR=$(LUCENE)/build/benchmark/lucene-benchmark-$(LUCENE_VER).jar을 추가하십시오.

3)$(ANALYZERS_JAR): 규칙과 그 이후에 $(BENCHMARK_JAR): 규칙을 찾습니다.

$(BENCHMARK_JAR): $(LUCENE_JAR) 
cd $(LUCENE)/benchmark; $(ANT) -Dversion=$(LUCENE_VER) compile 

마지막으로 완성 된 Mkaefile 및 build.xml 파일이 있습니다.