Ubuntu 安装 pylucene 踩坑还原记,并安装 SmartChineseAnalyzer

在Python环境下的Lucene,pylucene,本质还是基于JAVA写的,Python通过JNI调用Lucene,下面是安装经历,供大家避雷。

首先,pylucene下载地址,这边有很多版本,第一次安装 pylucene-4.10 ,安装过程中出现 java.lang.UnsupportedClassVersionError 大致就是版本不一致的错误,查了下,发现pylucene6.0以下的需要JDK7,而pylucen6以上的需要JDk8,而我是JDK8,无赖换 pylucen6.5.0,这一次安装过程中出现一个问题是找不到 helper文件,发现pylucen6.5.0的解压包里面有helper2,helper3.唯独没有helper,于是将pylucene6.5 下面的helper2,helper3分别重命名为helper,helper2,一路安装,结果在make 的时候出现一个问,在生成的JCC文件中,__init__.py文件出现问题:找不到from jcc import _jcc2,无赖,发现问题大了。。不能再改名字呀,于是,又换一个包pylucene6.4,这次一路顺畅,

结论,建议在JDK8的环境下安装pylucene6.4!

官方安装指南,How to install pylucene ,里面有所需依赖

安装教程:

tar -zxvf pylucene-6.4.0-src.tar.gz
pushd jcc

编辑jcc下的setu.py文件

JDK = {
    'darwin': JAVAHOME or JAVAFRAMEWORKS,
    'ipod': '/usr/include/gcc',
    'linux2': '/usr/lib/jvm/jdk1.8.0_121',#你的JDK路径
    'sunos5': '/usr/jdk/instances/jdk1.6.0',
    'win32': JAVAHOME,
    'mingw32': JAVAHOME,
    'freebsd7': '/usr/local/diablo-jdk1.6.0'
}
JAVAC = {
    'darwin': ['javac', '-source', '1.5', '-target', '1.5'],
    'ipod': ['jikes', '-cp', '/usr/share/classpath/glibj.zip'],
    'linux2': ['/usr/lib/jvm/jdk1.8.0_121/bin/javac'],#你的JDK路径
    'sunos5': ['javac'],
    'win32': ['%(win32)s/bin/javac.exe' %(JDK)],
    'mingw32': ['%(mingw32)s/bin/javac.exe' %(JDK)],
    'freebsd7': ['javac'],
}
JAVADOC = {
    'darwin': ['javadoc'],
    'ipod': [],
    'linux2': ['/usr/lib/jvm/jdk1.8.0_121/bin/javadoc'],#你的JDK路径
    'sunos5': ['javadoc'],
    'win32': ['%(win32)s/bin/javadoc.exe' %(JDK)],
    'mingw32': ['%(mingw32)s/bin/javadoc.exe' %(JDK)],
    'freebsd7': ['javadoc'],
}
保存

python setup.py build
sudo python setup.py install
popd
退出jcc文件夹,编辑Makefile文件

# Linux     (Debian Jessie 64-bit, Python 2.7.9, Oracle Java 1.8
# Be sure to also set JDK['linux2'] in jcc's setup.py to the JAVA_HOME value
# used below for ANT (and rebuild jcc after changing it).
PREFIX_PYTHON=/usr    #你Python的主文件
ANT=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121 /usr/bin/ant #前面是你JDK文件路径,后面是你ANT路径
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc --shared
NUM_FILES=8
退出,保存

make
make test
sudo make install

经过艰难的make,最终成功


测试:

打开Python

import lucene 
lucene.initVM()


在pylucene默认安装里面并不包含中文分词工具的,其自带的标准分析器(StandardAnalyzer),仅仅是将汉字分成独立的一个个字,这会导致一个类似:搜索“西游记”的时候,给你返回的第一个是“游”,所以需要我们修改Makefile文件,增加 中文分词工具,SmartChineseAnalyzer,其实还有另一个选项,安装paoding分词工具,这个还没尝试,等下次再说,这里仅仅说明如何安装自带的SmartChineseAnalyzer,如果你已经安装完毕,那么需要你再次make,覆盖安装,Makefile文件修改如下:

#JARS+=$(SMARTCN_JAR)            # smart chinese analyzer

找到这句话,将句首的#删除,找到这句话:

GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \

里面有一句话:

--exclude org.apache.lucene.sandbox.queries.regex.JakartaRegexpCapabilities \
在这句话的下一行,增添一句话:

--exclude org.apache.lucene.analysis.cn.smart.AnalyzerProfile\

保存Makefile,再次

make
make test
sudo make install

验证,打开Python

from org.apache.lucene.analysis.cn.smart import SmartChineseAnalyzer
导入,剩下的跟 StandardAnalyzer 用法一致


你可能感兴趣的:(机器学习算法,Python)