首页 文章

只有部分pylucene可用吗?

提问于
浏览
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.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 回答

  • 1

    几乎可以肯定,问题与最新版本的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规范:

    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
    
  • 0

    我使用了rikb的答案并且它有效,但我不得不改变

    'linux2':'/ usr / lib / jvm / java-7-openjdk-amd64',

    至...

    'linux2':'/ usr / lib / jvm / java-6-openjdk-amd64',

    因为我使用的是Java 6.看起来他也是,所以也许他没有在Linux上使用过这种配置 .

    另请注意,如果您复制并粘贴全部或部分rikb的Makefile块,您可能会在每行上有尾随空格 . 那么'sudo make'步骤将会失败,而不是神秘地传递,例如“make:execvp:/ usr:Permission denied” . 这是因为“PREFIX_PYTHON = / usr”之后的尾随空格导致make尝试执行dir / usr .

相关问题