Я хочу, чтобы вычислить среднюю длину документа для сбора документов, которые каждый документ, имеющий 3 различных полей (filed1, field2, field3)Расчет средней длины документа с Lucene
Это программа для расчета средней длины, когда только одно поле там.
private byte[] normsDocLengthArr = null;
private double avgDocLength;
normsDocLengthArr = indexReader.norms("filed1");
//norms-Returns the byte-encoded normalization factor for the named field of every document.
double sumLength = 0;
for (int i = 0; i < normsDocLengthArr.length; i++) {
double encodeLength = DefaultSimilarity.decodeNorm(normsDocLengthArr[i]);
//decodeNorm -Decodes a normalization factor stored in an index.
double length = 1/(encodeLength * encodeLength);
sumLength += length;
}
this.avgDocLength = sumLength/normsDocLengthArr.length;
Вот как я продлил его для всех трех полей.
private byte[] normsDocLengthArrField1 = null;
private byte[] normsDocLengthArrField2 = null;
private byte[] normsDocLengthArrField3 = null;
private double avgDocLength;
normsDocLengthArrField1 = indexReader.norms("filed1");
normsDocLengthArrField2 = indexReader.norms("filed2");
normsDocLengthArrField3 = indexReader.norms("filed3");
//norms-Returns the byte-encoded normalization factor for the named field of every document.
double sumLength = 0;
for (int i = 0; i < normsDocLengthArrField1.length; i++) {
double encodeLengthF1 = DefaultSimilarity.decodeNorm(normsDocLengthArrField1[i]);
double encodeLengthF2 = DefaultSimilarity.decodeNorm(normsDocLengthArrField2[i]);
double encodeLengthF3 = DefaultSimilarity.decodeNorm(normsDocLengthArrField3[i]);
//decodeNorm -Decodes a normalization factor stored in an index.
double length = 1/{(encodeLengthF1 * encodeLengthF1)+(encodeLengthF2 * encodeLengthF2)+(encodeLengthF3 * encodeLengthF3)};
sumLength += length;
}
this.avgDocLength = sumLength/(normsDocLengthArrField1.length+ normsDocLengthArrField2.length+normsDocLengthArrField3.length;
Я просто хочу знать, правильна ли моя реализация вычисления средней длины Doc для 3-х полей?