protected double cardinality(int subj, int pred, int obj, int context) throws IOException { TripleIndex index = getBestIndex(subj, pred, obj, context); BTree btree = index.btree; double rangeSize; if (index.getPatternScore(subj, pred, obj, context) == 0) { rangeSize = btree.getValueCountEstimate(); } else { byte[] minValue = getMinValue(subj, pred, obj, context); byte[] maxValue = getMaxValue(subj, pred, obj, context); rangeSize = btree.getValueCountEstimate(minValue, maxValue); } return rangeSize; }
protected double cardinality(int subj, int pred, int obj, int context) throws IOException { TripleIndex index = getBestIndex(subj, pred, obj, context); BTree btree = index.btree; double rangeSize; if (index.getPatternScore(subj, pred, obj, context) == 0) { rangeSize = btree.getValueCountEstimate(); } else { byte[] minValue = getMinValue(subj, pred, obj, context); byte[] maxValue = getMaxValue(subj, pred, obj, context); rangeSize = btree.getValueCountEstimate(minValue, maxValue); } return rangeSize; }
private RecordIterator getTriplesUsingIndex(int subj, int pred, int obj, int context, int flags, int flagsMask, TripleIndex index, boolean rangeSearch) { byte[] searchKey = getSearchKey(subj, pred, obj, context, flags); byte[] searchMask = getSearchMask(subj, pred, obj, context, flagsMask); if (rangeSearch) { // Use ranged search byte[] minValue = getMinValue(subj, pred, obj, context); byte[] maxValue = getMaxValue(subj, pred, obj, context); return index.getBTree().iterateRangedValues(searchKey, searchMask, minValue, maxValue); } else { // Use sequential scan return index.getBTree().iterateValues(searchKey, searchMask); } }
private RecordIterator getTriplesUsingIndex(int subj, int pred, int obj, int context, int flags, int flagsMask, TripleIndex index, boolean rangeSearch) { byte[] searchKey = getSearchKey(subj, pred, obj, context, flags); byte[] searchMask = getSearchMask(subj, pred, obj, context, flagsMask); if (rangeSearch) { // Use ranged search byte[] minValue = getMinValue(subj, pred, obj, context); byte[] maxValue = getMaxValue(subj, pred, obj, context); return index.getBTree().iterateRangedValues(searchKey, searchMask, minValue, maxValue); } else { // Use sequential scan return index.getBTree().iterateValues(searchKey, searchMask); } }