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