誰かが答えてくれるのを待った後、ピルセン開発者のメーリング リストでこの質問もしました。
そこにアンディ・ヴァイダが答えた。私はアンディに代わってこの質問に答えています。
アンディの引用:
PyLucene Makefile で jcc 呼び出しを見つけ、長いコマンド ラインに java.io.BufferedReader を追加し (必要に応じて末尾の \ を忘れないでください)、PyLucene を再構築します。
詳細:
pyLucene の Makefile に、この行がありますGENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \
。この行には--package java.io
、JCC に追加するクラス (BufferedReader) を追加して、Python コードで使用できるようにする必要があります。
次に、ピルセンを再度コンパイルしてインストールします。(コンパイルとインストールに関する情報は、PyLucene のドキュメントで見つけることができます。または、これを使用することもできます)。
また、BufferedReader
ファイルからオブジェクトを作成するには、 FileReader
. それも追加してください。
完全性のためだけに:この行を追加すると、次のGENERATE
ようになります。
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)
TrecTopicsReader
これを行うだけでは十分ではありません。ベンチマーク API に存在するため、デフォルトではインストール ライブラリに含まれていない lucene ベンチマーク ライブラリもコンパイルする必要があります。
ベンチマークをコンパイルしてインストールするには: ベンチマーク フォルダーが存在するメインの lucene フォルダー内の build.xml を変更する必要があります。次に、この jar をメインの Makefile に含めて、卵として Python ライブラリにインストールする必要があります。
build.xml : 3 つの変更が必要です。簡単にするために、jar-test-framework
と に従ってくださいjar-benchmark
。
あなたがしなければならない3つの変更は次のとおりです。
1) <target name="package" depends="jar-core, jar-test-framework, build-modules, init-dist, documentation"/>
それを <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"
description="Jars core, codecs, test-framework, and all modules">
<modules-crawl target="jar-core"/>
</target>
で置き換えます
<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>
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 : ここでも、3 つの変更を行う必要があります。簡単にするために、 についてHIGHLIGHTER_JAR
同様のルールを追加しBENCHMARK_JAR
ます。必要な変更は次の 3 つです。
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 ファイルをここに示します。