move index mapping to const variables
This commit is contained in:
parent
1cf4c7cd77
commit
f599483aab
2 changed files with 24 additions and 19 deletions
|
|
@ -14,9 +14,13 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const maxSearchResult = 101
|
const (
|
||||||
|
maxSearchResult = 101
|
||||||
const docType = "document"
|
docType = "document"
|
||||||
|
textField = "text"
|
||||||
|
tagsField = "tags"
|
||||||
|
createdField = "created"
|
||||||
|
)
|
||||||
|
|
||||||
type Document struct {
|
type Document struct {
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
|
|
@ -41,7 +45,6 @@ func NewIndex(path string) (i *Index, err error) {
|
||||||
err = errors.New("index: " + err.Error())
|
err = errors.New("index: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//m := bleve.NewIndexMapping()
|
|
||||||
bi, err = bleve.New(path, m)
|
bi, err = bleve.New(path, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = errors.New("index: " + err.Error())
|
err = errors.New("index: " + err.Error())
|
||||||
|
|
@ -88,13 +91,10 @@ func (i *Index) Get(id string) (doc *Document, err error) {
|
||||||
for _, f := range d.Fields {
|
for _, f := range d.Fields {
|
||||||
n := f.Name()
|
n := f.Name()
|
||||||
switch n {
|
switch n {
|
||||||
case "text":
|
case textField:
|
||||||
text := document.NewTextField(n, f.ArrayPositions(), f.Value())
|
text := document.NewTextField(n, f.ArrayPositions(), f.Value())
|
||||||
doc.Text = string(text.Value())
|
doc.Text = string(text.Value())
|
||||||
//case "tags":
|
case createdField:
|
||||||
// tags := document.NewTextField(n, f.ArrayPositions(), f.Value())
|
|
||||||
// doc.Tags = append(doc.Tags, string(tags.Value()))
|
|
||||||
case "created":
|
|
||||||
created := document.NewDateTimeFieldFromBytes(n, f.ArrayPositions(), f.Value())
|
created := document.NewDateTimeFieldFromBytes(n, f.ArrayPositions(), f.Value())
|
||||||
doc.Created, _ = created.DateTime()
|
doc.Created, _ = created.DateTime()
|
||||||
}
|
}
|
||||||
|
|
@ -124,14 +124,14 @@ func (i *Index) Search(search string) (results core.Results, err error) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for fragField, frags := range hit.Fragments {
|
for fragField, frags := range hit.Fragments {
|
||||||
if fragField == "tags" {
|
if fragField == tagsField {
|
||||||
var t string
|
var t string
|
||||||
for _, f := range frags {
|
for _, f := range frags {
|
||||||
t += f
|
t += f
|
||||||
}
|
}
|
||||||
r.Tags = strings.ReplaceAll(strings.ReplaceAll(t, "<mark>", ""), "</mark>", "")
|
r.Tags = strings.ReplaceAll(strings.ReplaceAll(t, "<mark>", ""), "</mark>", "")
|
||||||
}
|
}
|
||||||
if fragField == "text" || fragField == "created" {
|
if fragField == textField || fragField == createdField {
|
||||||
for _, f := range frags {
|
for _, f := range frags {
|
||||||
r.HTML += template.HTML(f)
|
r.HTML += template.HTML(f)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,15 @@ import (
|
||||||
"github.com/blevesearch/bleve/mapping"
|
"github.com/blevesearch/bleve/mapping"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
bigram = "bigram_tokenfilter"
|
||||||
|
ngram = "fulltext_ngram"
|
||||||
|
)
|
||||||
|
|
||||||
func createMapping() (m *mapping.IndexMappingImpl, err error) {
|
func createMapping() (m *mapping.IndexMappingImpl, err error) {
|
||||||
m = bleve.NewIndexMapping()
|
m = bleve.NewIndexMapping()
|
||||||
|
|
||||||
err = m.AddCustomTokenFilter("bigram_tokenfilter", map[string]interface{}{
|
err = m.AddCustomTokenFilter(bigram, map[string]interface{}{
|
||||||
"type": edgengram.Name,
|
"type": edgengram.Name,
|
||||||
"side": edgengram.FRONT,
|
"side": edgengram.FRONT,
|
||||||
"min": 3.0,
|
"min": 3.0,
|
||||||
|
|
@ -23,12 +28,12 @@ func createMapping() (m *mapping.IndexMappingImpl, err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = m.AddCustomAnalyzer("fulltext_ngram", map[string]interface{}{
|
err = m.AddCustomAnalyzer(ngram, map[string]interface{}{
|
||||||
"type": custom.Name,
|
"type": custom.Name,
|
||||||
"tokenizer": unicode.Name,
|
"tokenizer": unicode.Name,
|
||||||
"token_filters": []string{
|
"token_filters": []string{
|
||||||
lowercase.Name,
|
lowercase.Name,
|
||||||
"bigram_tokenfilter",
|
bigram,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -37,12 +42,12 @@ func createMapping() (m *mapping.IndexMappingImpl, err error) {
|
||||||
|
|
||||||
doc := bleve.NewDocumentMapping()
|
doc := bleve.NewDocumentMapping()
|
||||||
tm := bleve.NewTextFieldMapping()
|
tm := bleve.NewTextFieldMapping()
|
||||||
tm.Analyzer = "fulltext_ngram"
|
tm.Analyzer = ngram
|
||||||
doc.AddFieldMappingsAt("text", tm)
|
doc.AddFieldMappingsAt(textField, tm)
|
||||||
km := bleve.NewTextFieldMapping()
|
tagm := bleve.NewTextFieldMapping()
|
||||||
doc.AddFieldMappingsAt("keyword", km)
|
doc.AddFieldMappingsAt(tagsField, tagm)
|
||||||
cm := bleve.NewDateTimeFieldMapping()
|
cm := bleve.NewDateTimeFieldMapping()
|
||||||
doc.AddFieldMappingsAt("created", cm)
|
doc.AddFieldMappingsAt(createdField, cm)
|
||||||
|
|
||||||
m.AddDocumentMapping(docType, doc)
|
m.AddDocumentMapping(docType, doc)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue