From 2c10ce9c6ee90827be749954fe7ef03644d05513 Mon Sep 17 00:00:00 2001 From: Marty Schoch Date: Wed, 3 Sep 2014 16:41:32 -0400 Subject: [PATCH] updating to new index mapping api --- mapping.go | 75 ++++++++++++++++--------------------- mapping_example1.go | 90 ++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 90 deletions(-) diff --git a/mapping.go b/mapping.go index c7e6a55..d73164f 100644 --- a/mapping.go +++ b/mapping.go @@ -15,60 +15,49 @@ import ( "github.com/blevesearch/bleve" ) -const textFieldAnalyzer = "en" - func buildIndexMapping() (*bleve.IndexMapping, error) { - nameMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", textFieldAnalyzer, - true, true, true, true)) + // a generic reusable mapping for english text + englishTextFieldMapping := bleve.NewTextFieldMapping() + englishTextFieldMapping.Analyzer = "en" + + // a generic reusable mapping for keyword text + keywordFieldMapping := bleve.NewTextFieldMapping() + keywordFieldMapping.Analyzer = "keyword" - descMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", textFieldAnalyzer, - true, true, true, true)). - AddFieldMapping( - bleve.NewFieldMapping("descriptionLang", "text", "detect_lang", - false, true, false, false)) + // a specific mapping to index the description fields + // detected language + descriptionLangFieldMapping := bleve.NewTextFieldMapping() + descriptionLangFieldMapping.Name = "descriptionLang" + descriptionLangFieldMapping.Analyzer = "detect_lang" + descriptionLangFieldMapping.Store = false + descriptionLangFieldMapping.IncludeTermVectors = false + descriptionLangFieldMapping.IncludeInAll = false - typeMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "keyword", - true, true, true, true)) + beerMapping := bleve.NewDocumentMapping() - styleMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "keyword", - true, true, true, true)) + // name + beerMapping.AddFieldMappingsAt("name", englishTextFieldMapping) - categoryMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "keyword", - true, true, true, true)) + // description + beerMapping.AddFieldMappingsAt("description", + englishTextFieldMapping, + descriptionLangFieldMapping) - beerMapping := bleve.NewDocumentMapping(). - AddSubDocumentMapping("name", nameMapping). - AddSubDocumentMapping("description", descMapping). - AddSubDocumentMapping("type", typeMapping). - AddSubDocumentMapping("style", styleMapping). - AddSubDocumentMapping("category", categoryMapping) + beerMapping.AddFieldMappingsAt("type", keywordFieldMapping) + beerMapping.AddFieldMappingsAt("style", keywordFieldMapping) + beerMapping.AddFieldMappingsAt("category", keywordFieldMapping) - breweryMapping := bleve.NewDocumentMapping(). - AddSubDocumentMapping("name", nameMapping). - AddSubDocumentMapping("description", descMapping) + breweryMapping := bleve.NewDocumentMapping() + breweryMapping.AddFieldMappingsAt("name", englishTextFieldMapping) + breweryMapping.AddFieldMappingsAt("description", englishTextFieldMapping) - indexMapping := bleve.NewIndexMapping(). - AddDocumentMapping("beer", beerMapping). - AddDocumentMapping("brewery", breweryMapping) + indexMapping := bleve.NewIndexMapping() + indexMapping.AddDocumentMapping("beer", beerMapping) + indexMapping.AddDocumentMapping("brewery", breweryMapping) indexMapping.TypeField = "type" - indexMapping.DefaultAnalyzer = textFieldAnalyzer + indexMapping.DefaultAnalyzer = "en" return indexMapping, nil } diff --git a/mapping_example1.go b/mapping_example1.go index 239f91d..0b0fb81 100644 --- a/mapping_example1.go +++ b/mapping_example1.go @@ -19,53 +19,49 @@ const textFieldAnalyzer = "en" func buildIndexMapping() (*bleve.IndexMapping, error) { - nameMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", textFieldAnalyzer, - true, true, true, true)) - - descMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "enNotTooLong", - true, true, true, true)). - AddFieldMapping( - bleve.NewFieldMapping("descriptionLang", "text", "detect_lang", - false, true, false, false)) - - typeMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "keyword", - true, true, true, true)) - - styleMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "keyword", - true, true, true, true)) - - categoryMapping := bleve.NewDocumentMapping(). - AddFieldMapping( - bleve.NewFieldMapping( - "", "text", "keyword", - true, true, true, true)) - - beerMapping := bleve.NewDocumentMapping(). - AddSubDocumentMapping("name", nameMapping). - AddSubDocumentMapping("description", descMapping). - AddSubDocumentMapping("type", typeMapping). - AddSubDocumentMapping("style", styleMapping). - AddSubDocumentMapping("category", categoryMapping) - - breweryMapping := bleve.NewDocumentMapping(). - AddSubDocumentMapping("name", nameMapping). - AddSubDocumentMapping("description", descMapping) - - indexMapping := bleve.NewIndexMapping(). - AddDocumentMapping("beer", beerMapping). - AddDocumentMapping("brewery", breweryMapping) + // a custom field definition that uses our custom analyzer + notTooLongFieldMapping := bleve.NewFieldMapping( + "", "text", "enNotTooLong", + true, true, true, true) + + // a generic reusable mapping for english text + englishTextFieldMapping := bleve.NewTextFieldMapping() + englishTextFieldMapping.Analyzer = "en" + + // a generic reusable mapping for keyword text + keywordFieldMapping := bleve.NewTextFieldMapping() + keywordFieldMapping.Analyzer = "keyword" + + // a specific mapping to index the description fields + // detected language + descriptionLangFieldMapping := bleve.NewTextFieldMapping() + descriptionLangFieldMapping.Name = "descriptionLang" + descriptionLangFieldMapping.Analyzer = "detect_lang" + descriptionLangFieldMapping.Store = false + descriptionLangFieldMapping.IncludeTermVectors = false + descriptionLangFieldMapping.IncludeInAll = false + + beerMapping := bleve.NewDocumentMapping() + + // name + beerMapping.AddFieldMappingsAt("name", englishTextFieldMapping) + + // description + beerMapping.AddFieldMappingsAt("description", + notTooLongFieldMapping, + descriptionLangFieldMapping) + + beerMapping.AddFieldMappingsAt("type", keywordFieldMapping) + beerMapping.AddFieldMappingsAt("style", keywordFieldMapping) + beerMapping.AddFieldMappingsAt("category", keywordFieldMapping) + + breweryMapping := bleve.NewDocumentMapping() + breweryMapping.AddFieldMappingsAt("name", englishTextFieldMapping) + breweryMapping.AddFieldMappingsAt("description", englishTextFieldMapping) + + indexMapping := bleve.NewIndexMapping() + indexMapping.AddDocumentMapping("beer", beerMapping) + indexMapping.AddDocumentMapping("brewery", breweryMapping) indexMapping.TypeField = "type" indexMapping.DefaultAnalyzer = textFieldAnalyzer