package org.basex.query.item;
import org.basex.data.Data;
import org.basex.data.FTMatches;
import org.basex.util.ft.Scoring;
/**
* Disk-based full-text Node item.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public final class FTNode extends DBNode {
/** Length of the full-text token. */
private final int tl;
/** Total number of indexed results. */
private final int is;
/** Full-text matches. */
public FTMatches all;
/**
* Constructor, called by the sequential variant.
* @param a matches
* @param s scoring
*/
public FTNode(final FTMatches a, final double s) {
this(a, null, 0, 0, 0, s);
}
/**
* Constructor, called by the index variant.
* @param a full-text matches
* @param d data reference
* @param p pre value
* @param tol token length
* @param tis total size indexed results
* @param s score value out of the index
*/
public FTNode(final FTMatches a, final Data d, final int p, final int tol,
final int tis, final double s) {
super(d, p, null, NodeType.TXT);
all = a;
tl = tol;
is = tis;
if(s != -1) score = s;
}
@Override
public double score() {
if(score == null) {
if(all == null) return 0;
score = Scoring.textNode(all.size, is, tl, data.textLen(pre, true));
}
return score;
}
@Override
public String toString() {
return super.toString() + (all != null ? " (" + all.size + ')' : "");
}
}