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.Terminal;
|
||||
import org.lucares.utils.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ExpressionToDocIdVisitor.class);
|
||||
|
||||
public static final class AllDocIds {
|
||||
|
||||
@@ -62,14 +65,15 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
|
||||
|
||||
@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<IntList> {
|
||||
|
||||
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<IntList> {
|
||||
|
||||
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<IntList> {
|
||||
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<IntList> {
|
||||
|
||||
@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<IntList> {
|
||||
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<IntList> {
|
||||
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<IntList> {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private boolean containsWildcard(final String stringValue) {
|
||||
return stringValue.contains("*");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user