aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/blevesearch/bleve/mapping/document.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/blevesearch/bleve/mapping/document.go')
-rw-r--r--vendor/github.com/blevesearch/bleve/mapping/document.go26
1 files changed, 17 insertions, 9 deletions
diff --git a/vendor/github.com/blevesearch/bleve/mapping/document.go b/vendor/github.com/blevesearch/bleve/mapping/document.go
index f950b59bef..15cb6b5fa1 100644
--- a/vendor/github.com/blevesearch/bleve/mapping/document.go
+++ b/vendor/github.com/blevesearch/bleve/mapping/document.go
@@ -525,19 +525,27 @@ func (dm *DocumentMapping) processProperty(property interface{}, path []string,
if !propertyValue.IsNil() {
switch property := property.(type) {
case encoding.TextMarshaler:
-
- txt, err := property.MarshalText()
- if err == nil && subDocMapping != nil {
- // index by explicit mapping
+ // ONLY process TextMarshaler if there is an explicit mapping
+ // AND all of the fiels are of type text
+ // OTHERWISE process field without TextMarshaler
+ if subDocMapping != nil {
+ allFieldsText := true
for _, fieldMapping := range subDocMapping.Fields {
- if fieldMapping.Type == "text" {
- fieldMapping.processString(string(txt), pathString, path, indexes, context)
+ if fieldMapping.Type != "text" {
+ allFieldsText = false
+ break
}
}
- } else {
- dm.walkDocument(property, path, indexes, context)
+ txt, err := property.MarshalText()
+ if err == nil && allFieldsText {
+ txtStr := string(txt)
+ for _, fieldMapping := range subDocMapping.Fields {
+ fieldMapping.processString(txtStr, pathString, path, indexes, context)
+ }
+ return
+ }
}
-
+ dm.walkDocument(property, path, indexes, context)
default:
dm.walkDocument(property, path, indexes, context)
}