我使用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.LucenePackage替换lucene.Version.LUCENE_CURRENT
带有lucene.MMapDirectory的
- lucene.SimpleFSDirectory
为了达到这个目的 .
http://lucene.apache.org/pylucene/features.html说"The PyLucene API exposes all Java Lucene classes in a flat namespace in the PyLucene module."这似乎不完全正确,lucene.StopAnalyzer.ENGLISH_STOP_WORDS_SET对于pydev是已知的,而lucene.ENGLISH_STOP_WORDS_SET则不是 .
所以我似乎正在/ / ...的旧版本的一部分? pylucene正确搞定,但不是全部!?为什么会这样?
2 回答
几乎可以肯定,问题与最新版本的pylucene有关,因为.deb是2.3.1而pylucene现在是v.3.6.1!
从源代码发布制作需要一点点触摸 . JohnW在http://john.wesorick.com/2011/11/installing-pylucene-on-ubuntu-1110.html的指示很有帮助 . 为了它的 Value ,这里是我最后的变化,首先是_1163909中的linux2的JDK规范:
然后到Makefile:
我使用了rikb的答案并且它有效,但我不得不改变
至...
因为我使用的是Java 6.看起来他也是,所以也许他没有在Linux上使用过这种配置 .
另请注意,如果您复制并粘贴全部或部分rikb的Makefile块,您可能会在每行上有尾随空格 . 那么'sudo make'步骤将会失败,而不是神秘地传递,例如“make:execvp:/ usr:Permission denied” . 这是因为“PREFIX_PYTHON = / usr”之后的尾随空格导致make尝试执行dir / usr .