diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java b/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java index 8a4fcf6..96dc08e 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java @@ -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.Terminal; import org.lucares.utils.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ExpressionToDocIdVisitor extends ExpressionVisitor { + private static final Logger LOGGER = LoggerFactory.getLogger(ExpressionToDocIdVisitor.class); public static final class AllDocIds { @@ -62,14 +65,15 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { @Override public IntList visit(final And expression) { - final Expression left = expression.getLeft(); final Expression right = expression.getRight(); final IntList leftFiles = left.visit(this); final IntList rightFiles = right.visit(this); + final long start = System.nanoTime(); 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(); return result; @@ -82,8 +86,9 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { final IntList leftFiles = left.visit(this); final IntList rightFiles = right.visit(this); - + final long start = System.nanoTime(); 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(); return result; @@ -94,6 +99,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { final Expression negatedExpression = expression.getExpression(); final IntList expr = negatedExpression.visit(this); + final long start = System.nanoTime(); final IntList allDocIds = getAllDocIds(); final IntList result = new IntList(allDocIds.size()); @@ -105,6 +111,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { result.add(docId); } } + LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size()); return result; } @@ -118,8 +125,10 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { @Override public IntList visit(final Expression.MatchAll expression) { - - return getAllDocIds(); + final long start = System.nanoTime(); + IntList result = getAllDocIds(); + LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size()); + return result; } private IntList getAllDocIds() { @@ -132,7 +141,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { final String propertyName = expression.property; final Terminal propertyValue = expression.value; final String stringValue = propertyValue.getValue(); - + final long start = System.nanoTime(); final IntList result; if (isMatchAll(stringValue)) { @@ -148,6 +157,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { result = keyToValueToDocId.getOrDefault(propertyName, EMPTY_VALUES).getOrDefault(stringValue, EMPTY_DOC_IDS); } + LOGGER.trace("{} took {} ms results={}", expression, (System.nanoTime() - start) / 1_000_000.0, result.size()); return result; } @@ -175,7 +185,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { return result; } - + private boolean containsWildcard(final String stringValue) { return stringValue.contains("*"); }