2014-12-08 4 views
-1

나는 article의 java 코드와 마찬가지로 pylucene에서 페이로드를 사용하려고합니다. 파이썬 스 니펫은 다음과 같습니다.DefaultSimilarity의 scorePayload 메소드가 pulucene에서 작동하지 않습니다.

class PayloadSimilarity(PythonDefaultSimilarity): 

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

하지만 작동하지 않습니다. 메서드 scorePayload이 호출되지 않습니다. 단어의 유효 하중은 문서에 설정 한 값이 아닌 1입니다.

자바에서 동일한 코드는 잘 작동 :

class PayloadSimilarity extends DefaultSimilarity { 

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

나는이 link에 따라 파이썬 코드를 썼다. 전체 파이썬 코드는 there

+0

무엇을 작동하지 않습니다

이 파일 pylucene/java/org/apache/pylucene/search/similarities/PythonDefaultSimilarity.java에 몇 가지 코드를 추가 하시겠습니까? 출력이 올바르지 않습니까? 예외를 던지고 있습니까? – gcarvelli

+0

@ killermonkey50 출력이 올바르지 않습니다. 'scorePayload' 메소드는 절대로 호출되지 않습니다. – iceout

답변

0

입니다. document of jcc을 읽은 후 직접 해결했습니다. 이 문제는 this one과 동일합니다.

내 솔루션은 다음과 같습니다

import org.apache.lucene.util.BytesRef; 
public native float scorePayload(int docId, int start, int end, BytesRef payload); 
관련 문제