일부 답변을 기다린 후, 나는 또한 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 파일이 있습니다.