add trace logging to ExpressionToDocIdVisitor
This commit is contained in:
@@ -20,8 +20,11 @@ import org.lucares.pdb.datastore.lang.Expression.Parentheses;
|
|||||||
import org.lucares.pdb.datastore.lang.Expression.Property;
|
import org.lucares.pdb.datastore.lang.Expression.Property;
|
||||||
import org.lucares.pdb.datastore.lang.Expression.Terminal;
|
import org.lucares.pdb.datastore.lang.Expression.Terminal;
|
||||||
import org.lucares.utils.CollectionUtils;
|
import org.lucares.utils.CollectionUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(ExpressionToDocIdVisitor.class);
|
||||||
|
|
||||||
public static final class AllDocIds {
|
public static final class AllDocIds {
|
||||||
|
|
||||||
@@ -62,14 +65,15 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IntList visit(final And expression) {
|
public IntList visit(final And expression) {
|
||||||
|
|
||||||
final Expression left = expression.getLeft();
|
final Expression left = expression.getLeft();
|
||||||
final Expression right = expression.getRight();
|
final Expression right = expression.getRight();
|
||||||
|
|
||||||
final IntList leftFiles = left.visit(this);
|
final IntList leftFiles = left.visit(this);
|
||||||
final IntList rightFiles = right.visit(this);
|
final IntList rightFiles = right.visit(this);
|
||||||
|
|
||||||
|
final long start = System.nanoTime();
|
||||||
final IntList result = IntList.intersection(leftFiles,rightFiles);
|
final IntList result = IntList.intersection(leftFiles,rightFiles);
|
||||||
|
LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size());
|
||||||
assert result.isSorted();
|
assert result.isSorted();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -82,8 +86,9 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
|
|
||||||
final IntList leftFiles = left.visit(this);
|
final IntList leftFiles = left.visit(this);
|
||||||
final IntList rightFiles = right.visit(this);
|
final IntList rightFiles = right.visit(this);
|
||||||
|
final long start = System.nanoTime();
|
||||||
final IntList result = IntList.union(leftFiles, rightFiles);
|
final IntList result = IntList.union(leftFiles, rightFiles);
|
||||||
|
LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size());
|
||||||
assert result.isSorted();
|
assert result.isSorted();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -94,6 +99,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
|
|
||||||
final Expression negatedExpression = expression.getExpression();
|
final Expression negatedExpression = expression.getExpression();
|
||||||
final IntList expr = negatedExpression.visit(this);
|
final IntList expr = negatedExpression.visit(this);
|
||||||
|
final long start = System.nanoTime();
|
||||||
final IntList allDocIds = getAllDocIds();
|
final IntList allDocIds = getAllDocIds();
|
||||||
|
|
||||||
final IntList result = new IntList(allDocIds.size());
|
final IntList result = new IntList(allDocIds.size());
|
||||||
@@ -105,6 +111,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
result.add(docId);
|
result.add(docId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size());
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -118,8 +125,10 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IntList visit(final Expression.MatchAll expression) {
|
public IntList visit(final Expression.MatchAll expression) {
|
||||||
|
final long start = System.nanoTime();
|
||||||
return getAllDocIds();
|
IntList result = getAllDocIds();
|
||||||
|
LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size());
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IntList getAllDocIds() {
|
private IntList getAllDocIds() {
|
||||||
@@ -132,7 +141,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
final String propertyName = expression.property;
|
final String propertyName = expression.property;
|
||||||
final Terminal propertyValue = expression.value;
|
final Terminal propertyValue = expression.value;
|
||||||
final String stringValue = propertyValue.getValue();
|
final String stringValue = propertyValue.getValue();
|
||||||
|
final long start = System.nanoTime();
|
||||||
final IntList result;
|
final IntList result;
|
||||||
if (isMatchAll(stringValue)) {
|
if (isMatchAll(stringValue)) {
|
||||||
|
|
||||||
@@ -148,6 +157,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
|||||||
result = keyToValueToDocId.getOrDefault(propertyName, EMPTY_VALUES).getOrDefault(stringValue,
|
result = keyToValueToDocId.getOrDefault(propertyName, EMPTY_VALUES).getOrDefault(stringValue,
|
||||||
EMPTY_DOC_IDS);
|
EMPTY_DOC_IDS);
|
||||||
}
|
}
|
||||||
|
LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size());
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user