-1

我想在pylucene中使用payload,就像本文的java代码一样。python片段是:

class PayloadSimilarity(PythonDefaultSimilarity):

    def scorePayload(self, docId, start, end, payload): # this never execute
        return PayloadHelper.decodeFloat(payload.bytes, end) 

但它不起作用。该方法scorePayload永远不会被调用。word的有效载荷仍然是1,而不是我在文档中设置的值。

java中的相同代码可以正常工作:

class PayloadSimilarity extends DefaultSimilarity {

    @Override
    public float scorePayload(int docId, int start, int end,  BytesRef payload) {
        return PayloadHelper.decodeFloat(payload.bytes, end);
    }
}

我根据这个链接编写了python代码。完整的python代码在那里

4

1 回答 1

0

阅读jcc 的文档后,我自己解决了这个问题。这个问题和这个问题一样。

我的解决方案是:

在这个文件中添加一些代码pylucene/java/org/apache/pylucene/search/similarities/PythonDefaultSimilarity.java

import org.apache.lucene.util.BytesRef;
public native float scorePayload(int docId, int start, int end, BytesRef payload);
于 2014-12-09T05:32:21.447 回答