diff --git a/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/factors/Bm25Factor.java b/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/factors/Bm25Factor.java index 43a63ab6..d99df66f 100644 --- a/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/factors/Bm25Factor.java +++ b/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/factors/Bm25Factor.java @@ -57,24 +57,30 @@ public class Bm25Factor { double qcount = 0.; - if ((keyword.encodedWordMetadata() & WordFlags.Site.asBit()) != 0) - qcount += 0.5; - if ((keyword.encodedWordMetadata() & WordFlags.SiteAdjacent.asBit()) != 0) - qcount += 0.5; - if ((keyword.encodedWordMetadata() & WordFlags.ExternalLink.asBit()) != 0) { + qcount += 2.5; if ((keyword.encodedWordMetadata() & WordFlags.UrlDomain.asBit()) != 0) qcount += 2.5; else if ((keyword.encodedWordMetadata() & WordFlags.UrlPath.asBit()) != 0) - qcount += 1; + qcount += 1.5; + + if ((keyword.encodedWordMetadata() & WordFlags.Site.asBit()) != 0) + qcount += 1.25; + if ((keyword.encodedWordMetadata() & WordFlags.SiteAdjacent.asBit()) != 0) + qcount += 1.25; } else { - if ((keyword.encodedWordMetadata() & WordFlags.UrlPath.asBit()) != 0) - qcount += 1; if ((keyword.encodedWordMetadata() & WordFlags.UrlDomain.asBit()) != 0) - qcount += 1.5; + qcount += 3; + else if ((keyword.encodedWordMetadata() & WordFlags.UrlPath.asBit()) != 0) + qcount += 1; + + if ((keyword.encodedWordMetadata() & WordFlags.Site.asBit()) != 0) + qcount += 0.5; + if ((keyword.encodedWordMetadata() & WordFlags.SiteAdjacent.asBit()) != 0) + qcount += 0.5; } if ((keyword.encodedWordMetadata() & WordFlags.Title.asBit()) != 0)