@@ -12,16 +12,16 @@ import com.sksamuel.elastic4s.ElasticDsl.*
12
12
import com .sksamuel .elastic4s .fields .{ElasticField , ObjectField }
13
13
import com .sksamuel .elastic4s .requests .indexes .IndexRequest
14
14
import com .sksamuel .elastic4s .requests .mappings .MappingDefinition
15
- import com .sksamuel .elastic4s .requests .mappings .dynamictemplate .DynamicTemplateRequest
16
15
import com .typesafe .scalalogging .StrictLogging
17
16
import no .ndla .common .CirceUtil
18
17
import no .ndla .imageapi .Props
19
18
import no .ndla .imageapi .model .domain .ImageMetaInformation
20
19
import no .ndla .imageapi .model .search .SearchableImage
21
20
import no .ndla .imageapi .repository .{ImageRepository , Repository }
21
+ import no .ndla .search .SearchLanguage
22
22
23
23
trait ImageIndexService {
24
- this : SearchConverterService with IndexService with ImageRepository with Props =>
24
+ this : SearchConverterService & IndexService & ImageRepository & Props & SearchLanguage =>
25
25
val imageIndexService : ImageIndexService
26
26
27
27
class ImageIndexService extends StrictLogging with IndexService [ImageMetaInformation , SearchableImage ] {
@@ -36,6 +36,23 @@ trait ImageIndexService {
36
36
Seq (indexInto(indexName).doc(source).id(domainModel.id.get.toString))
37
37
}
38
38
39
+ protected def generateLanguageSupportedFieldList (fieldName : String , keepRaw : Boolean = false ): Seq [ElasticField ] = {
40
+ if (keepRaw) {
41
+ SearchLanguage .languageAnalyzers.map(langAnalyzer =>
42
+ textField(s " $fieldName. ${langAnalyzer.languageTag.toString}" )
43
+ .fielddata(false )
44
+ .analyzer(langAnalyzer.analyzer)
45
+ .fields(keywordField(" raw" ))
46
+ )
47
+ } else {
48
+ SearchLanguage .languageAnalyzers.map(langAnalyzer =>
49
+ textField(s " $fieldName. ${langAnalyzer.languageTag.toString}" )
50
+ .fielddata(false )
51
+ .analyzer(langAnalyzer.analyzer)
52
+ )
53
+ }
54
+ }
55
+
39
56
def getMapping : MappingDefinition = {
40
57
val fields : Seq [ElasticField ] = List (
41
58
ObjectField (" domainObject" , enabled = Some (false )),
@@ -60,12 +77,12 @@ trait ImageIndexService {
60
77
)
61
78
)
62
79
63
- val dynamics : Seq [ DynamicTemplateRequest ] = generateLanguageSupportedDynamicTemplates (" titles" , keepRaw = true ) ++
64
- generateLanguageSupportedDynamicTemplates (" alttexts" , keepRaw = false ) ++
65
- generateLanguageSupportedDynamicTemplates (" captions" , keepRaw = false ) ++
66
- generateLanguageSupportedDynamicTemplates (" tags" , keepRaw = false )
80
+ val dynamics = generateLanguageSupportedFieldList (" titles" , keepRaw = true ) ++
81
+ generateLanguageSupportedFieldList (" alttexts" ) ++
82
+ generateLanguageSupportedFieldList (" captions" ) ++
83
+ generateLanguageSupportedFieldList (" tags" )
67
84
68
- properties(fields).dynamicTemplates( dynamics)
85
+ properties(fields ++ dynamics)
69
86
}
70
87
}
71
88
0 commit comments