diff --git a/code/functions/search-query/api/java/nu/marginalia/api/searchquery/model/results/ResultRankingContext.java b/code/functions/search-query/api/java/nu/marginalia/api/searchquery/model/results/ResultRankingContext.java index 01c017f0..aca77bd5 100644 --- a/code/functions/search-query/api/java/nu/marginalia/api/searchquery/model/results/ResultRankingContext.java +++ b/code/functions/search-query/api/java/nu/marginalia/api/searchquery/model/results/ResultRankingContext.java @@ -34,7 +34,11 @@ public class ResultRankingContext { this.ngramsMask = ngramsMask; this.regularMask = new BitSet(ngramsMask.length()); - this.regularMask.xor(ngramsMask); + for (int i = 0; i < ngramsMask.length(); i++) { + if (!ngramsMask.get(i)) { + regularMask.set(i); + } + } this.fullCounts = fullCounts; this.priorityCounts = prioCounts; diff --git a/code/index/java/nu/marginalia/ranking/results/factors/TermCoherenceFactor.java b/code/index/java/nu/marginalia/ranking/results/factors/TermCoherenceFactor.java index d8739a8c..f535403c 100644 --- a/code/index/java/nu/marginalia/ranking/results/factors/TermCoherenceFactor.java +++ b/code/index/java/nu/marginalia/ranking/results/factors/TermCoherenceFactor.java @@ -14,6 +14,9 @@ public class TermCoherenceFactor { * found in the same sentences. */ public double calculateOverlap(CompiledQueryLong wordMetadataQuery) { + if (wordMetadataQuery.size() <= 2) + return 0; + long mask = CompiledQueryAggregates.longBitmaskAggregate(wordMetadataQuery, score -> score >>> WordMetadata.POSITIONS_SHIFT); @@ -62,7 +65,7 @@ public class TermCoherenceFactor { } } - if (cnt != 0) { + if (cnt > 0) { return sum / cnt; } else { return 0;