博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu 安装 pylucene 踩坑还原记,并安装 SmartChineseAnalyzer
阅读量:2440 次
发布时间:2019-05-10

本文共 2769 字,大约阅读时间需要 9 分钟。

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

首先,,这边有很多版本,第一次安装 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!

官方安装指南, ,里面有所需依赖

安装教程:

tar -zxvf pylucene-6.4.0-src.tar.gzpushd 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 buildsudo python setup.py installpopd
退出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/pythonJCC=$(PYTHON) -m jcc --sharedNUM_FILES=8
退出,保存

makemake testsudo 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,再次

makemake testsudo make install
验证,打开Python

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

你可能感兴趣的文章
共享池 shared pool
查看>>
一张图搞定Java面向对象
查看>>
Borland ALM之需求定义和管理解决方案
查看>>
Verizon选择Borland控制开发流程并降低风险
查看>>
Borland 崭新的Caliber Define IT产品
查看>>
IBM Rational RequisitePro集成简介
查看>>
OOAD利器Rational Rose的介绍
查看>>
一年的测试生活和感悟
查看>>
通过RUP用例进行需求管理的可追踪性策略(2)
查看>>
持续改进之配置管理变更的关键路径
查看>>
postgresql 优化与维护
查看>>
mongodb replica sets 测试
查看>>
linux AS6.2 与 as5.4 的对比,性能提升明显
查看>>
FLASHCACHE 的是是非非
查看>>
length() between oracle and postgresql
查看>>
99-lisp lisp 的99个问题 P1-10
查看>>
PG 函数的易变性(Function Volatility Categories)
查看>>
Lisp Quote 和Backquote分析
查看>>
PG psql 变彩色显示
查看>>
SICP 练习 1.3
查看>>