do not use static string compressor in ExpressionToDocIdVisitor
This commit is contained in:
@@ -287,7 +287,7 @@ public class DataStore implements AutoCloseable {
|
||||
synchronized (docIdToDoc) {
|
||||
final Expression expression = QueryLanguageParser.parse(query.getQuery());
|
||||
final ExpressionToDocIdVisitor visitor = new ExpressionToDocIdVisitor(query.getDateRange(), tagToDocsId,
|
||||
diskStorage);
|
||||
diskStorage, stringCompressor);
|
||||
final PartitionLongList docIdsList = expression.visit(visitor);
|
||||
EXECUTE_QUERY_LOGGER.debug("executeQuery({}) took {}ms returned {} results ", query,
|
||||
(System.nanoTime() - start) / 1_000_000.0, docIdsList.size());
|
||||
|
||||
@@ -11,7 +11,6 @@ import org.lucares.collections.LongList;
|
||||
import org.lucares.pdb.api.DateTimeRange;
|
||||
import org.lucares.pdb.api.StringCompressor;
|
||||
import org.lucares.pdb.api.Tag;
|
||||
import org.lucares.pdb.api.Tags;
|
||||
import org.lucares.pdb.blockstorage.LongStreamFile;
|
||||
import org.lucares.pdb.datastore.internal.DatePartitioner;
|
||||
import org.lucares.pdb.datastore.internal.ParititionId;
|
||||
@@ -34,8 +33,12 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<PartitionLongLis
|
||||
|
||||
private final DatePartitioner datePartitioner;
|
||||
|
||||
private final StringCompressor stringCompressor;
|
||||
|
||||
public ExpressionToDocIdVisitor(final DateTimeRange dateRange,
|
||||
final PartitionPersistentMap<Tag, Long, Long> keyToValueToDocsId, final PartitionDiskStore diskStorage) {
|
||||
final PartitionPersistentMap<Tag, Long, Long> keyToValueToDocsId, final PartitionDiskStore diskStorage,
|
||||
final StringCompressor stringCompressor) {
|
||||
this.stringCompressor = stringCompressor;
|
||||
this.datePartitioner = new DatePartitioner(dateRange);
|
||||
this.keyToValueToDocId = keyToValueToDocsId;
|
||||
this.diskStorage = diskStorage;
|
||||
@@ -149,9 +152,9 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<PartitionLongLis
|
||||
final Set<ParititionId> availablePartitionIds = keyToValueToDocId.getAvailablePartitionIds(datePartitioner);
|
||||
for (final ParititionId partitionId : availablePartitionIds) {
|
||||
final List<LongList> docIdsForPartition = new ArrayList<>();
|
||||
keyToValueToDocId.visitValues(partitionId, Tags.STRING_COMPRESSOR.createTag(propertyName, ""),
|
||||
keyToValueToDocId.visitValues(partitionId, stringCompressor.createTag(propertyName, ""),
|
||||
(tag, blockOffsetToDocIds) -> {
|
||||
if (valuePattern.matcher(Tags.STRING_COMPRESSOR.getValueAsString(tag)).matches()) {
|
||||
if (valuePattern.matcher(stringCompressor.getValueAsString(tag)).matches()) {
|
||||
try (final LongStreamFile bsFile = diskStorage.streamExistingFile(blockOffsetToDocIds,
|
||||
partitionId)) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user