-
Notifications
You must be signed in to change notification settings - Fork 0
/
mappings.go
80 lines (66 loc) · 2.71 KB
/
mappings.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package indexer
import (
"fmt"
"github.com/blevesearch/bleve/v2"
"github.com/blevesearch/bleve/v2/analysis/lang/ar"
"github.com/blevesearch/bleve/v2/analysis/lang/da"
"github.com/blevesearch/bleve/v2/analysis/lang/de"
"github.com/blevesearch/bleve/v2/analysis/lang/en"
"github.com/blevesearch/bleve/v2/analysis/lang/es"
"github.com/blevesearch/bleve/v2/analysis/lang/fa"
"github.com/blevesearch/bleve/v2/analysis/lang/fi"
"github.com/blevesearch/bleve/v2/analysis/lang/fr"
"github.com/blevesearch/bleve/v2/analysis/lang/hu"
"github.com/blevesearch/bleve/v2/analysis/lang/it"
"github.com/blevesearch/bleve/v2/analysis/lang/nl"
"github.com/blevesearch/bleve/v2/analysis/lang/pt"
"github.com/blevesearch/bleve/v2/analysis/lang/ro"
"github.com/blevesearch/bleve/v2/analysis/lang/ru"
"github.com/blevesearch/bleve/v2/analysis/lang/sv"
"github.com/blevesearch/bleve/v2/analysis/lang/tr"
"github.com/blevesearch/bleve/v2/mapping"
"github.com/blevesearch/bleve/v2/analysis/analyzer/keyword"
"github.com/abadojack/whatlanggo"
)
var (
SupportedLanguages = map[string]whatlanggo.Lang{
en.AnalyzerName: whatlanggo.Eng,
ar.AnalyzerName: whatlanggo.Arb,
da.AnalyzerName: whatlanggo.Dan,
nl.AnalyzerName: whatlanggo.Nld,
fi.AnalyzerName: whatlanggo.Fin,
fr.AnalyzerName: whatlanggo.Fra,
hu.AnalyzerName: whatlanggo.Hun,
it.AnalyzerName: whatlanggo.Ita,
de.AnalyzerName: whatlanggo.Deu,
fa.AnalyzerName: whatlanggo.Pes,
pt.AnalyzerName: whatlanggo.Por,
ro.AnalyzerName: whatlanggo.Ron,
ru.AnalyzerName: whatlanggo.Rus,
es.AnalyzerName: whatlanggo.Spa,
sv.AnalyzerName: whatlanggo.Swe,
tr.AnalyzerName: whatlanggo.Tur,
}
)
func BuildIndexMapping() (mapping.IndexMapping, error) {
rootTextFieldMapping := bleve.NewTextFieldMapping()
keywordFieldMapping := bleve.NewTextFieldMapping()
keywordFieldMapping.Analyzer = keyword.Name
bookmarkMapping := bleve.NewDocumentMapping()
for k, _ := range SupportedLanguages {
textFieldMapping := bleve.NewTextFieldMapping()
textFieldMapping.Analyzer = k
bookmarkMapping.AddFieldMappingsAt(fmt.Sprintf("%s_title", k), textFieldMapping)
bookmarkMapping.AddFieldMappingsAt(fmt.Sprintf("%s_text", k), textFieldMapping)
bookmarkMapping.AddFieldMappingsAt(fmt.Sprintf("%s_excerpt", k), textFieldMapping)
}
bookmarkMapping.AddFieldMappingsAt("folder", rootTextFieldMapping)
bookmarkMapping.AddFieldMappingsAt("author", keywordFieldMapping)
bookmarkMapping.AddFieldMappingsAt("lang", keywordFieldMapping)
bookmarkMapping.AddFieldMappingsAt("siteName", keywordFieldMapping)
indexMapping := bleve.NewIndexMapping()
indexMapping.AddDocumentMapping("bookmark", bookmarkMapping)
indexMapping.TypeField = "type"
indexMapping.DefaultAnalyzer = "en"
return indexMapping, nil
}