pylucene的初始化助手和简单包装器
smc.lucene的Python项目详细描述
lucene模块包装器
lucene模块包装器负责初始化和线程 JCC API中的陷阱。当第一个 对象是从facade模块中检索的。它还连接电流 当JNI虚拟机环境以前没有连接时,它将线程连接到该环境。
包装器还解决了jvm安装自己的信号的问题。 处理程序。默认情况下,jvm会在initvm()中覆盖python的信号处理程序, 从而导致一些难以调试的问题。例如,sigint不再是 翻译成keybaradinterrupt异常。包装器代码恢复所有 信号处理程序到它以前的状态。 只有jvm的sigsegv处理程序留在原地,因为它记录并打印有用的 JVM段故障时的信息。
classpath参数是可选的。当没有设置类路径时,smc.lucene 自动为您添加classpath=lucene.classpath。
示例1-按需初始化lucene
替换如下代码:
import lucene lucene.initVM(classpath=lucene.CLASSPATH, vmwargs='...') def query_lucene(...): lucene.attachCurrentThread() query = lucene.BooleanQuery() ...
使用:
from smc.lucene import lucene lucene.set_initargs(vmargs='...') def query_lucene(...): query = lucene.BooleanQuery()
检索booleanquery属性时会自动初始化lucene 从门面模块。如果pylucene已经初始化了facade模块 确保当前线程已连接。
不能将lucene属性分配给跨线程共享的对象。 如果必须跨线程共享对象,则必须调用lucene.attach() 才能使用对象。
示例2-lucene
的显式初始化示例:
from smc.lucene import lucene as lucene_wrapper from lucene import BooleanQuery def query_lucene(...): lucene_wrapper.attach() query = BooleanQuery()
attach方法要么初始化lucene,要么附加当前线程。
版权所有
版权所有(c)2008语义有限公司。保留所有权利。
semantics Kommunikationsmanagement GmbH Viktoriaallee 45 D-52066 Aachen Germany Tel.: +49 241 89 49 89 29 eMail: info(at)semantics.de http://www.semantics.de/