Ubuntu上安裝PyLucene

機(jī)器環(huán)境:Ubuntu 16.04,Java 1.8

  1. 安裝ANT:
sudo apt install ant
  1. 下載pylucene-4.10.1-1或者pylucene-6.5.0包,并解壓。

    注意,不要去pylucene的github倉(cāng)庫(kù)https://github.com/svn2github/pylucene下載,其中缺少部分文件。

    當(dāng)執(zhí)行make命令時(shí)會(huì)報(bào)錯(cuò):

    make
    mkdir -p lucene-java-7.4.0
    tar -C ~/apache/lucene.git -cf - lucene | tar -C lucene-java-7.4.0 -xvf -
    tar: ~/apache/lucene.git: Cannot open: No such file or directory
    tar: Error is not recoverable: exiting now
    tar: This does not look like a tar archive
    tar: Exiting with failure status due to previous errors
    Makefile:191: recipe for target 'lucene-java-7.4.0' failed
    make: *** [lucene-java-7.4.0] Error 2
    
  2. 安裝JCC

    • pylucene-4.10.1-1

      進(jìn)入jcc,修改setup.py:

      JDK = {
          'darwin': JAVAHOME or JAVAFRAMEWORKS,
          'ipod': '/usr/include/gcc',
          'linux2': '/usr/lib/jvm/java-8-oracle',
      #    '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'
      }
      

      執(zhí)行下面的命令:

      sudo python setup.py build
      sudo python setup.py install
      

      驗(yàn)證JCC安裝成功:

      python -m jcc
      
    • pylucene-6.5.0

      進(jìn)入jcc文件夾,

      執(zhí)行下面的命令:

      sudo python setup.py build
      sudo python setup.py install
      

      驗(yàn)證JCC安裝成功:

      python -m jcc
      
  3. 安裝pylucene

    根據(jù)系統(tǒng)環(huán)境修改Makefile文件:

    pylucene-4.10.1-1

    PREFIX_PYTHON=/usr
    #ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant
    ANT=JAVA_HOME=/usr/lib/jvm/java-8-oracle /usr/bin/ant
    PYTHON=$(PREFIX_PYTHON)/bin/python
    JCC=$(PYTHON) -m jcc --shared
    NUM_FILES=8
    

    pylucene-6.5.0

    PREFIX_PYTHON=/usr
    ANT=JAVA_HOME=/usr/lib/jvm/java-8-oracle /usr/bin/ant
    PYTHON=$(PREFIX_PYTHON)/bin/python
    JCC=$(PYTHON) -m jcc --shared
    NUM_FILES=8
    

    執(zhí)行下面的命令:

    make
    sudo make install
    

    驗(yàn)證lucene安裝成功:

    python -c "import lucene"
    
  4. 遇到的問題

    執(zhí)行make命令時(shí)報(bào)錯(cuò):

    ...
    BUILD SUCCESSFUL
    Total time: 12 seconds
    ICU not installed
    /opt/apache/pylucene/_install/bin/python -m jcc --shared --jar lucene-java-6.5.0/lucene/build/core/lucene-core-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/analysis/common/lucene-analyzers-common-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/memory/lucene-memory-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/highlighter/lucene-highlighter-6.5.0.jar --jar build/jar/extensions.jar --jar lucene-java-6.5.0/lucene/build/queries/lucene-queries-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/queryparser/lucene-queryparser-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/sandbox/lucene-sandbox-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/analysis/stempel/lucene-analyzers-stempel-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/grouping/lucene-grouping-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/join/lucene-join-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/facet/lucene-facet-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/suggest/lucene-suggest-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/expressions/lucene-expressions-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/analysis/kuromoji/lucene-analyzers-kuromoji-6.5.0.jar --jar lucene-java-6.5.0/lucene/build/misc/lucene-misc-6.5.0.jar  --use_full_names --include lucene-java-6.5.0/lucene/expressions/lib/antlr4-runtime-4.5.1-1.jar --include lucene-java-6.5.0/lucene/expressions/lib/asm-5.1.jar --include lucene-java-6.5.0/lucene/expressions/lib/asm-commons-5.1.jar --package java.lang java.lang.System java.lang.Runtime --package java.util java.util.Arrays java.util.Collections java.util.HashMap java.util.HashSet java.util.TreeSet java.lang.IllegalStateException java.lang.IndexOutOfBoundsException java.util.NoSuchElementException java.text.SimpleDateFormat java.text.DecimalFormat java.text.Collator --package java.util.concurrent java.util.concurrent.Executors --package java.util.regex --package java.io java.io.StringReader --package java.nio.file java.nio.file.Path java.nio.file.Files java.nio.file.Paths --exclude org.apache.lucene.sandbox.queries.regex.JakartaRegexpCapabilities --exclude org.apache.regexp.RegexpTunnel --exclude org.apache.lucene.store.WindowsDirectory --exclude org.apache.lucene.store.NativePosixUtil --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;' --sequence java.util.AbstractList 'size:()I' 'get:(I)Ljava/lang/Object;' org.apache.lucene.index.IndexWriter:getReader org.apache.lucene.analysis.Tokenizer:input --version 6.5.0 --module python/collections.py --module python/ICUNormalizer2Filter.py --module python/ICUFoldingFilter.py --module python/ICUTransformFilter.py  --files 8 --build
    make: /opt/apache/pylucene/_install/bin/python: Command not found
    Makefile:340: recipe for target 'compile' failed
    make: *** [compile] Error 127
    

    原因是:Makefile文件中的“PREFIX_PYTHON”配置錯(cuò)誤,

    PREFIX_PYTHON=/opt/apache/pylucene/_install
    

    解決辦法:按上面的Makefile修改即可。

Enjoy!

俠天,專注于大數(shù)據(jù)、機(jī)器學(xué)習(xí)和數(shù)學(xué)相關(guān)的內(nèi)容,并有個(gè)人公眾號(hào):bigdata_ny分享相關(guān)技術(shù)文章。

若發(fā)現(xiàn)以上文章有任何不妥,請(qǐng)聯(lián)系我。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容