Merge pull request #236 from pmezard/implement-doc-static-mapping
implement document static mappings
This commit is contained in:
commit
6fa02b786d
@ -15,6 +15,7 @@ import (
|
||||
"log"
|
||||
"os"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
@ -1039,6 +1040,67 @@ func TestTermVectorArrayPositions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDocumentStaticMapping(t *testing.T) {
|
||||
defer func() {
|
||||
err := os.RemoveAll("testidx")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
m := NewIndexMapping()
|
||||
m.DefaultMapping = NewDocumentStaticMapping()
|
||||
m.DefaultMapping.AddFieldMappingsAt("Text", NewTextFieldMapping())
|
||||
m.DefaultMapping.AddFieldMappingsAt("Date", NewDateTimeFieldMapping())
|
||||
m.DefaultMapping.AddFieldMappingsAt("Numeric", NewNumericFieldMapping())
|
||||
|
||||
index, err := New("testidx", m)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
doc1 := struct {
|
||||
Text string
|
||||
IgnoredText string
|
||||
Numeric float64
|
||||
IgnoredNumeric float64
|
||||
Date time.Time
|
||||
IgnoredDate time.Time
|
||||
}{
|
||||
Text: "valid text",
|
||||
IgnoredText: "ignored text",
|
||||
Numeric: 10,
|
||||
IgnoredNumeric: 20,
|
||||
Date: time.Unix(1, 0),
|
||||
IgnoredDate: time.Unix(2, 0),
|
||||
}
|
||||
|
||||
err = index.Index("a", doc1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
fields, err := index.Fields()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
sort.Strings(fields)
|
||||
expectedFields := []string{"Date", "Numeric", "Text", "_all"}
|
||||
if len(fields) != len(expectedFields) {
|
||||
t.Fatalf("invalid field count: %d", len(fields))
|
||||
}
|
||||
for i, expected := range expectedFields {
|
||||
if expected != fields[i] {
|
||||
t.Fatalf("unexpected field[%d]: %s", i, fields[i])
|
||||
}
|
||||
}
|
||||
|
||||
err = index.Close()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIndexEmptyDocId(t *testing.T) {
|
||||
defer func() {
|
||||
err := os.RemoveAll("testidx")
|
||||
|
@ -322,7 +322,7 @@ func (dm *DocumentMapping) processProperty(property interface{}, path []string,
|
||||
for _, fieldMapping := range subDocMapping.Fields {
|
||||
fieldMapping.processString(propertyValueString, pathString, path, indexes, context)
|
||||
}
|
||||
} else {
|
||||
} else if dm.Dynamic {
|
||||
// automatic indexing behavior
|
||||
|
||||
// first see if it can be parsed by the default date parser
|
||||
@ -347,7 +347,7 @@ func (dm *DocumentMapping) processProperty(property interface{}, path []string,
|
||||
for _, fieldMapping := range subDocMapping.Fields {
|
||||
fieldMapping.processFloat64(propertyValFloat, pathString, path, indexes, context)
|
||||
}
|
||||
} else {
|
||||
} else if dm.Dynamic {
|
||||
// automatic indexing behavior
|
||||
fieldMapping := NewNumericFieldMapping()
|
||||
fieldMapping.processFloat64(propertyValFloat, pathString, path, indexes, context)
|
||||
@ -361,7 +361,7 @@ func (dm *DocumentMapping) processProperty(property interface{}, path []string,
|
||||
for _, fieldMapping := range subDocMapping.Fields {
|
||||
fieldMapping.processTime(property, pathString, path, indexes, context)
|
||||
}
|
||||
} else {
|
||||
} else if dm.Dynamic {
|
||||
fieldMapping := NewDateTimeFieldMapping()
|
||||
fieldMapping.processTime(property, pathString, path, indexes, context)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user