2011-04-19 2 views
0

Lucene이 어떻게 만들 수 있는지, 소스 코드에서 IndexReader로 검색자를 초기화할 때 세그먼트 파일을 열고로드한다는 것을 알고 있습니다. 그러나 Lucene이 어떻게 용어 빈도를 계산하는지 알려주는 사람이 있습니까? 특별한 분야의 문서. 특별한 알고리즘이 있습니까? 원한다면, TF에 explan 코드를 판독 할 때 그것을 알아낼 수문서 필드에서 특정 용어의 빈도를 계산하는 방법은 무엇입니까?

Explanation tfExplanation = new Explanation(); 
    int d = scorer.advance(doc); 
    float phraseFreq = (d == doc) ? scorer.currentFreq() : 0.0f; 
    tfExplanation.setValue(similarity.tf(phraseFreq)); 
    tfExplanation.setDescription("tf(phraseFreq=" + phraseFreq + ")"); 

방위군> 0이지만 이유 코드 phraseFreq 0.0이고, I는 (d == 문서)가 유사하므로 알 거짓, 왜냐하면 d = Integer.MAX_VALUE, 왜 그런지, 그리고 무엇이 문제인지 모르겠다.

ps : 색인 생성되고 저장되는 하나의 필드가있는 문서가 하나 뿐이며 searcher.explan (booleanQuery, 1)과 같이 디버그 코드에서 사용되는 문서는 1입니다.

누군가가 나에게 조언을 해줄 수 있기를 바랍니다. 감사합니다.

답변

1

나는 마침내 lucene.explain의 메소드 사용법이 검색 결과와 잘 작동한다는 것을 알았지 만 잘못된 입력 변수 (query, int) 및 int 문서 번호가 아닙니다.

+0

자신을 올바른 대답으로 투표하고 몇 가지 사항을 선택하십시오. 행운을 빕니다! – shellter

+0

조언 해 주셔서 감사합니다. –

관련 문제