Prevent usage of object based RamUsageEstimator in Completion090PostingsFormat

This commit is contained in:
Simon Willnauer 2014-01-31 20:38:16 +01:00
parent 3e3170278e
commit 6e18a8945d
3 changed files with 18 additions and 2 deletions

View File

@ -204,6 +204,7 @@ public class AnalyzingCompletionLookupProvider extends CompletionLookupProvider
@Override
public LookupFactory load(IndexInput input) throws IOException {
long sizeInBytes = 0;
int version = CodecUtil.checkHeader(input, CODEC_NAME, CODEC_VERSION_START, CODEC_VERSION_LATEST);
final Map<String, AnalyzingSuggestHolder> lookupMap = new HashMap<String, AnalyzingSuggestHolder>();
input.seek(input.length() - 8);
@ -249,8 +250,10 @@ public class AnalyzingCompletionLookupProvider extends CompletionLookupProvider
AnalyzingSuggestHolder holder = new AnalyzingSuggestHolder(preserveSep, preservePositionIncrements, maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions,
hasPayloads, maxAnalyzedPathsForOneInput, fst, sepLabel, payloadSep, endByte, holeCharacter);
sizeInBytes += fst.sizeInBytes();
lookupMap.put(entry.getValue(), holder);
}
final long ramBytesUsed = sizeInBytes;
return new LookupFactory() {
@Override
public Lookup getLookup(FieldMapper<?> mapper, CompletionSuggestionContext suggestionContext) {
@ -309,6 +312,11 @@ public class AnalyzingCompletionLookupProvider extends CompletionLookupProvider
AnalyzingSuggestHolder getAnalyzingSuggestHolder(FieldMapper<?> mapper) {
return lookupMap.get(mapper.names().indexName());
}
@Override
public long ramBytesUsed() {
return ramBytesUsed;
}
};
}

View File

@ -272,7 +272,7 @@ public class Completion090PostingsFormat extends PostingsFormat {
@Override
public long ramBytesUsed() {
return RamUsageEstimator.sizeOf(lookupFactory) + delegateProducer.ramBytesUsed();
return (lookupFactory == null ? 0 : lookupFactory.ramBytesUsed()) + delegateProducer.ramBytesUsed();
}
}
@ -367,5 +367,6 @@ public class Completion090PostingsFormat extends PostingsFormat {
public abstract Lookup getLookup(FieldMapper<?> mapper, CompletionSuggestionContext suggestionContext);
public abstract CompletionStats stats(String ... fields);
abstract AnalyzingCompletionLookupProvider.AnalyzingSuggestHolder getAnalyzingSuggestHolder(FieldMapper<?> mapper);
public abstract long ramBytesUsed();
}
}

View File

@ -224,7 +224,7 @@ public class AnalyzingCompletionLookupProviderV1 extends CompletionLookupProvide
long offset = input.readVLong();
meta.put(offset, name);
}
long sizeInBytes = 0;
for (Map.Entry<Long, String> entry : meta.entrySet()) {
input.seek(entry.getKey());
FST<Pair<Long, BytesRef>> fst = new FST<Pair<Long, BytesRef>>(input, new PairOutputs<Long, BytesRef>(
@ -236,9 +236,11 @@ public class AnalyzingCompletionLookupProviderV1 extends CompletionLookupProvide
boolean preserveSep = (options & SERIALIZE_PRESERVE_SEPERATORS) != 0;
boolean hasPayloads = (options & SERIALIZE_HAS_PAYLOADS) != 0;
boolean preservePositionIncrements = (options & SERIALIZE_PRESERVE_POSITION_INCREMENTS) != 0;
sizeInBytes += fst.sizeInBytes();
lookupMap.put(entry.getValue(), new AnalyzingSuggestHolder(preserveSep, preservePositionIncrements, maxSurfaceFormsPerAnalyzedForm, maxGraphExpansions,
hasPayloads, maxAnalyzedPathsForOneInput, fst));
}
final long ramBytesUsed = sizeInBytes;
return new LookupFactory() {
@Override
public Lookup getLookup(FieldMapper<?> mapper, CompletionSuggestionContext suggestionContext) {
@ -295,6 +297,11 @@ public class AnalyzingCompletionLookupProviderV1 extends CompletionLookupProvide
AnalyzingSuggestHolder getAnalyzingSuggestHolder(FieldMapper<?> mapper) {
return lookupMap.get(mapper.names().indexName());
}
@Override
public long ramBytesUsed() {
return ramBytesUsed;
}
};
}