在Ubuntu 10.04上安装PyLucene 3.0.3 - java

我正在尝试在Ubuntu 10.04上安装PyLucene 3.0.3。事实证明,这具有很大的挑战性,但到目前为止,我已经:

  • 按照PyLucene文档中的说明修补了setuptools以允许构建JCC。
  • 通过以下方式构建了JCC:cd pylucene-3.0.3-1 / jcc; python setup.py构建
  • 通过ant构建Lucene 3.0.3,并将jar安装到/usr/share/java/lucene-core-3.0.3-dev.jar。注意,我在/usr/share/java/lucene-core-2.9.2.jar上安装了Ubuntu的默认Lucene软件包,该软件包也符号链接到/usr/share/java/lucene-core.jar。
  • 我现在正在尝试“制作” PyLucene,但出现错误:

    cd lucene-java-3.0.3;  -Dversion=3.0.3
    /bin/sh: -Dversion=3.0.3: not found
    make: *** [lucene-java-3.0.3/build/lucene-core-3.0.3.jar] Error 127
    

    pylucene-3.0.3-1 / doc / documentation / install.html文件提到“编辑Makefile以匹配您的环境”,但是我不确定这是什么意思。 Makefile似乎包含与我安装的Lucene版本号相同的Lucene版本号。为了构建PyLucene,我还需要如何编辑makefile?

    编辑:取消注释makefile中的某个部分(感谢Torsten)以在Ubuntu 8.10(严重的是8.10 ?!)下进行编译后,大部分内容似乎都可以正常编译,但是我仍然收到错误消息。一些组件报告“BUILD SUCCESSFUL”,但最终构建以以下内容结束:

    /usr/bin/python -m jcc --shared --jar lucene-java-3.0.3/build/lucene-core-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/snowball/lucene-snowball-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/analyzers/common/lucene-analyzers-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/regex/lucene-regex-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/memory/lucene-memory-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/highlighter/lucene-highlighter-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/queries/lucene-queries-3.0.3.jar --jar build/jar/extensions.jar  --package java.lang java.lang.System java.lang.Runtime --package java.util java.util.Arrays java.text.SimpleDateFormat java.text.DecimalFormat java.text.Collator --package java.io java.io.StringReader java.io.InputStreamReader java.io.FileInputStream --exclude org.apache.lucene.queryParser.Token --exclude org.apache.lucene.queryParser.TokenMgrError --exclude org.apache.lucene.queryParser.QueryParserTokenManager --exclude org.apache.lucene.queryParser.ParseException --exclude org.apache.lucene.search.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;' --rename org.apache.lucene.search.highlight.SpanScorer=HighlighterSpanScorer --version 3.0.3 --module python/collections.py --files 200 --build 
    /usr/bin/python: jcc is a package and cannot be directly executed
    make: *** [compile] Error 1
    

    参考方案

    我之前做过(但没有在Ubuntu中安装Lucene的默认软件包)。我不知道Error 127到底是什么,但就我而言,它有助于从我的Makefile中的原始NUM_FILES=200中设置NUM_FILES=2。由于某种原因,当NUM_FILES=2时,它会在内存中创建ubuntu无法处理的巨大文件。使用NUM_FILES=200可以使代码块变小,并且最终安装对我有用。对于python 2.6,您还必须更改Makefile中的JCC设置(请参见下文)。

    这是Makefile中对我来说很重要的部分:

    # Linux     (Ubuntu 8.10 64-bit, Python 2.5.2, OpenJDK 1.6, setuptools 0.6c9)
    PREFIX_PYTHON=/usr
    ANT=ant
    PYTHON=$(PREFIX_PYTHON)/bin/python
    JCC=$(PYTHON) -m jcc.__main__ --shared
    NUM_FILES=200
    

    Java:找到特定字符并获取子字符串 - java

    我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

    Java:正则表达式模式匹配器是否有大小限制? - java

    我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

    python-构造函数中的另一个类 - java

    我是Python的新手,我很难理解如何在Python中执行以下操作(例如,在Java中的操作方式)class Person{ private String name; private Address address; public Person(String xyz, Address a) { this.name = xyz; this.address = …

    Java:线程池如何将线程映射到可运行对象 - java

    试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

    Java:我可以在Hashmaps中使用数组吗? - java

    我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();