From dac948973d98a1f5ef51e9bc26aa1ac5bbac059f Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Wed, 17 Apr 2024 14:20:01 +0200 Subject: [PATCH] (index) Remove position overlap check, coherences will do the work instead --- .../results/IndexResultValuationContext.java | 42 +------------------ 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/code/index/java/nu/marginalia/index/results/IndexResultValuationContext.java b/code/index/java/nu/marginalia/index/results/IndexResultValuationContext.java index 3a7f157b..1ef1f4b4 100644 --- a/code/index/java/nu/marginalia/index/results/IndexResultValuationContext.java +++ b/code/index/java/nu/marginalia/index/results/IndexResultValuationContext.java @@ -97,13 +97,12 @@ public class IndexResultValuationContext { boolean allSynthetic = !CompiledQueryAggregates.booleanAggregate(wordMetasQuery, WordFlags.Synthetic::isAbsent); int flagsCount = CompiledQueryAggregates.intMaxMinAggregate(wordMetasQuery, wordMeta -> Long.bitCount(wordMeta & flagsFilterMask)); int positionsCount = CompiledQueryAggregates.intMaxMinAggregate(wordMetasQuery, wordMeta -> Long.bitCount(WordMetadata.decodePositions(wordMeta))); - boolean noneOverlap = wordMetasQuery.root.visit(new PositionOverlapOperator(wordMetasQuery.data)) != 0; if (!meetsQueryStrategyRequirements(wordMetasQuery, queryParams.queryStrategy())) { return null; } - if (flagsCount == 0 && !allSynthetic && (positionsCount == 0 || noneOverlap)) + if (flagsCount == 0 && !allSynthetic && positionsCount == 0) return null; double score = searchResultValuator.calculateSearchResultValue( @@ -167,42 +166,3 @@ public class IndexResultValuationContext { } } - -class PositionOverlapOperator implements CqExpression.LongVisitor { - private final CqDataLong wordMetaData; - - PositionOverlapOperator(CqDataLong wordMetaData) { - this.wordMetaData = wordMetaData; - } - - @Override - public long onAnd(List parts) { - long positions = ~0; - long flags = 0; - - for (var part : parts) { - long pv = part.visit(this); - - flags |= pv; - positions &= pv; - } - - return positions | (flags & WordMetadata.FLAGS_MASK); - } - - @Override - public long onOr(List parts) { - long ret = 0; - - for (var part : parts) { - ret |= part.visit(this); - } - - return ret; - } - - @Override - public long onLeaf(int idx) { - return wordMetaData.get(idx); - } -}