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); - } -}