lyng/site/src/jsTest/kotlin/SearchScoringTest.kt

30 lines
992 B
Kotlin

import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class SearchScoringTest {
private fun rec(text: String, title: String = "Doc") = DocRecord("docs/a.md", title, norm(text))
@Test
fun zeroWhenNoTerms() {
assertEquals(0, scoreQueryAdvanced(emptyList(), rec("hello world")))
}
@Test
fun coverageMatters() {
val r = rec("alpha beta gamma alpha beta")
val s1 = scoreQueryAdvanced(listOf("alp"), r)
val s2 = scoreQueryAdvanced(listOf("alp", "bet"), r)
assertTrue(s2 > s1, "two-term coverage should score higher than one-term")
}
@Test
fun proximityImprovesScore() {
val near = rec("alpha beta gamma")
val far = rec(("alpha "+"x ").repeat(50) + "beta")
val sNear = scoreQueryAdvanced(listOf("alp", "bet"), near)
val sFar = scoreQueryAdvanced(listOf("alp", "bet"), far)
assertTrue(sNear > sFar, "closer terms should have higher score")
}
}