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

前端之家收集整理的这篇文章主要介绍了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 用法一致 原文链接:https://www.f2er.com/ubuntu/351857.html

猜你在找的Ubuntu相关文章