1

Java Luceneコードをpylucene(v 2.3.1)に移植しようとしています。http://svn.apache.org/viewcvs.cgi/lucene/pylucene/trunk/samples/の例を使用していますが 、ほとんどのpyluceneがPythonに組み込まれているようです(ubuntu 12.04、pydev 2.6.0、eclipse 3.7.2)環境は問題ありません。たとえば、lucene.initVM()(JCCが配置されていることを示す)を実行し、... / samples/PorterStemmerAnalyzer.pyから取得した例に従ってPorterステマーを定義できます。

self.analyzer = PorterStemmerAnalyzer()

しかし、新しいIndexWriterを作成しようとすると、コンストラクターの最後の引数でつまずきます。

self.writer = lucene.IndexWriter(self.store, self.analyzer, True, lucene.IndexWriter.MaxFieldLength.LIMITED)

このエラーが発生します:

AttributeError: type object 'IndexWriter' has no attribute 'MaxFieldLength'.

これは私が現時点で困惑しているエラーですが、他にもいくつかのハックがあります(それらのバージョンから... /サンプル)私も作成しました(しかし心配もします):

  • lucene.Version.LUCENE_CURRENTをlucene.LucenePackageに置き換えます

  • lucene.SimpleFSDirectoryとlucene.MMapDirectory

ここまで到達するために。

http://lucene.apache.org/pylucene/features.htmlには、「PyLucene APIは、PyLuceneモジュールのフラットな名前空間ですべてのJavaLuceneクラスを公開します」と記載されています。これは完全には正しくないようです。lucene.StopAnalyzer.ENGLISH_STOP_WORDS_SETはpydevに認識されていますが、lucene.ENGLISH_STOP_WORDS_SETは認識されていません。

だから私は/の一部/古いバージョンを取得しているようです/...?ピルセンは正しくかみ合ったが、全部ではない!?なぜこれなのか?

4

2 に答える 2

1

ほぼ確実に、問題は .deb として利用可能なピルセンの最新バージョンが 2.3.1 であったのに対し、ピルセンは現在 v. 3.6.1 であることに関係していました。

ソース配布物から作成するには、少し手を加える必要があります。http://john.wesorick.com/2011/11/installing-pylucene-on-ubuntu-1110.htmlにある JohnW の指示 が役に立ちました。価値のあるものとして、ここに私が最終的に行った変更があります。最初に linux2 の JDK 仕様にjcc/setup.py:

JDK = {
    'darwin': JAVAHOME,
    'ipod': '/usr/include/gcc',
    'linux2': '/usr/lib/jvm/java-7-openjdk-amd64',
    'sunos5': '/usr/jdk/instances/jdk1.6.0',
    'win32': JAVAHOME,
    'mingw32': JAVAHOME,
    'freebsd7': '/usr/local/diablo-jdk1.6.0'
}

そして Makefile に:

PREFIX_PYTHON=/usr
ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc --shared
NUM_FILES=4
于 2012-09-19T20:33:53.090 に答える