在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 用法一致 原文链接:https://www.f2er.com/ubuntu/351857.html