我正在尝试将一些 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'.
这是目前让我难过的错误,但我也做过其他几个黑客(来自他们的版本.../samples)(但也担心):
用 lucene.LucenePackage 替换 lucene.Version.LUCENE_CURRENT
lucene.SimpleFSDirectory 和 lucene.MMapDirectory
为了能走到这一步。
http://lucene.apache.org/pylucene/features.html说“PyLucene API 在 PyLucene 模块的平面命名空间中公开所有 Java Lucene 类。” 这似乎并不完全正确, lucene.StopAnalyzer.ENGLISH_STOP_WORDS_SET 是 pydev 已知的,而 lucene.ENGLISH_STOP_WORDS_SET 不是。
所以看来我正在成为/的一部分/旧版本/...?pylucene 正确接合,但不是全部!?为什么会这样?