我试图从http://searchhub.org/2010/04/18/refresh-getting-starting-with-payloads/using Pylucene实现java的python版本。我的分析器正在对DelimitedTokenFilter的init调用生成Lucene.InvalidArgSerror
课程在下面,任何帮助都是非常感谢的。用Pylucene3.6构建中的JAR文件编译的java版本工作得很好。
import lucene
class PayloadAnalyzer(lucene.PythonAnalyzer):
encoder = None
def __init__(self, encoder):
lucene.PythonAnalyzer.__init__(self)
self.encoder = encoder
def tokenStream(self, fieldName, reader):
result = lucene.WhitespaceTokenizer( lucene.Version.LUCENE_CURRENT, reader )
result = lucene.LowerCaseFilter( lucene.Version.LUCENE_CURRENT, result )
result = lucene.DelimitedPayloadTokenFilter( result, '|', self.encoder )
return result
jcc的医生说:
当JCC看到这些特殊的扩展java类时,它生成C++代码,实现它们声明的本机方法。这些本机方法调用相应的Python方法实现,传入参数并将结果返回给Java VM调用者。
因此,您应该在Pylucene中编辑文件java/org/apache/pylucene/search/semines/pythonDefaultSimilarity.java
。
import org.apache.lucene.util.BytesRef;
public native float scorePayload(int docId, int start, int end, BytesRef payload);
class PayloadSimilarity(PythonDefaultSimilarity):
def scorePayload(self, docId, start, end, payload):
return PayloadHelper.decodeFloat(payload.bytes, end)
class PayloadAnalyzer(PythonAnalyzer):
encoder = None
def __init__(self, encoder):
super(PayloadAnalyzer, self).__init__()
self.encoder = encoder
def createComponents(self, fieldName, reader):
source = WhitespaceTokenizer(Version.LUCENE_44, reader)
result = LowerCaseFilter(Version.LUCENE_44, source)
result = DelimitedPayloadTokenFilter(result, u'|', self.encoder)
return self.TokenStreamComponents(source, result)
PyLucene 是 Python 语言用来访问 Lucene 索引库的封装。通过 PyLucene 可以用来创建索引和对索引进行搜索。PyLucene 使用 JCC 构建。 示例说明: Java 代码: for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(
其他地方建议使用PyLucene附带的,但事实证明这不是的实例,不能与一起使用。 如何给一组新的停止词?
我终于能够安装最新版本的pylucene,尽管我无法找到如何完成一些基本功能的教程或示例,如索引、指定查询和检索文档。
我是pylucene的新手,我试图构建一个自定义分析器,它只在下划线的基础上标记文本,即它应该保留空白空间。示例:“hi_this is_awesome”应该标记为[“hi”,“this is”,“awesome”]标记。 从各种代码示例中,我了解到需要重写CustomTokenizer的incrementToken方法,并编写CustomAnalyzer,TokenStream需要使用Custo
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?
我已经为android Studio创建了一个webview应用程序。但没有加载web URL。错误为NET::ERR_ACCESS_DENIED。有谁能帮忙吗