Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/search/bleve/init.go
1562 views
1
package bleve
2
3
import (
4
"github.com/alist-org/alist/v3/internal/conf"
5
"github.com/alist-org/alist/v3/internal/search/searcher"
6
"github.com/blevesearch/bleve/v2"
7
log "github.com/sirupsen/logrus"
8
)
9
10
var config = searcher.Config{
11
Name: "bleve",
12
}
13
14
func Init(indexPath *string) (bleve.Index, error) {
15
log.Debugf("bleve path: %s", *indexPath)
16
fileIndex, err := bleve.Open(*indexPath)
17
if err == bleve.ErrorIndexPathDoesNotExist {
18
log.Infof("Creating new index...")
19
indexMapping := bleve.NewIndexMapping()
20
searchNodeMapping := bleve.NewDocumentMapping()
21
searchNodeMapping.AddFieldMappingsAt("is_dir", bleve.NewBooleanFieldMapping())
22
// TODO: appoint analyzer
23
parentFieldMapping := bleve.NewTextFieldMapping()
24
searchNodeMapping.AddFieldMappingsAt("parent", parentFieldMapping)
25
// TODO: appoint analyzer
26
nameFieldMapping := bleve.NewKeywordFieldMapping()
27
searchNodeMapping.AddFieldMappingsAt("name", nameFieldMapping)
28
indexMapping.AddDocumentMapping("SearchNode", searchNodeMapping)
29
fileIndex, err = bleve.New(*indexPath, indexMapping)
30
if err != nil {
31
return nil, err
32
}
33
} else if err != nil {
34
return nil, err
35
}
36
return fileIndex, nil
37
}
38
39
func init() {
40
searcher.RegisterSearcher(config, func() (searcher.Searcher, error) {
41
b, err := Init(&conf.Conf.BleveDir)
42
if err != nil {
43
return nil, err
44
}
45
return &Bleve{BIndex: b}, nil
46
})
47
}
48
49