Skip to content

Commit 499e1b7

Browse files
committed
Add explain test
1 parent 6685aa2 commit 499e1b7

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/commonTest/kotlin/suite/TestSuiteSearch.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,21 @@ package suite
22

33
import clientAdmin1
44
import clientSearch
5+
import com.algolia.search.dsl.*
6+
import com.algolia.search.helper.readContent
57
import com.algolia.search.helper.toAttribute
68
import com.algolia.search.model.ObjectID
9+
import com.algolia.search.model.indexing.Indexable
710
import com.algolia.search.model.response.ResponseSearch
11+
import com.algolia.search.model.search.ExplainModule
12+
import com.algolia.search.model.search.IgnorePlurals
813
import com.algolia.search.model.search.Query
914
import com.algolia.search.model.settings.AttributeForFaceting
1015
import com.algolia.search.model.settings.Settings
1116
import com.algolia.search.model.task.Task
1217
import com.algolia.search.model.task.TaskStatus
18+
import io.ktor.client.features.ResponseException
19+
import kotlinx.serialization.Serializable
1320
import kotlinx.serialization.json.JsonObjectSerializer
1421
import kotlinx.serialization.list
1522
import runBlocking
@@ -90,4 +97,54 @@ internal class TestSuiteSearch {
9097
}
9198
}
9299
}
100+
101+
@Test
102+
fun explain() {
103+
104+
@Serializable
105+
data class DecompoundingObject(
106+
override val objectID: ObjectID,
107+
val type: String,
108+
val category: String? = null
109+
): Indexable
110+
111+
runBlocking {
112+
val settings = settings {
113+
decompoundedAttributes {
114+
german {
115+
+"category"
116+
+"type"
117+
+"desc"
118+
}
119+
}
120+
queryLanguages {
121+
+German
122+
}
123+
ignorePlurals = IgnorePlurals.True
124+
}
125+
val data = listOf(
126+
DecompoundingObject(ObjectID("A...B"), "Hütte", "Hunde"),
127+
DecompoundingObject(ObjectID("AB"), "Ich will ein schöne Hundehütte"),
128+
DecompoundingObject(ObjectID("BA"), "Hüttehunde, Es ist eine lustige Verbindung!"),
129+
DecompoundingObject(ObjectID("B...A"), "Eine Hütte für Hunde"),
130+
DecompoundingObject(ObjectID("A"), "Hunde"),
131+
DecompoundingObject(ObjectID("B"), "Hütte")
132+
)
133+
134+
index.apply {
135+
saveObjects(DecompoundingObject.serializer(), data).wait()
136+
setSettings(settings).wait()
137+
}
138+
139+
val search = index.search(
140+
query("Hundehütte") {
141+
ignorePlurals = IgnorePlurals.True
142+
explainModules { +ExplainModule.MatchAlternatives }
143+
}
144+
)
145+
146+
search.explainOrNull.shouldNotBeNull()
147+
search.explain.match.alternatives.size shouldEqual 11
148+
}
149+
}
93150
}

0 commit comments

Comments
 (0)