Skip to content

Commit

Permalink
updating to new index mapping api
Browse files Browse the repository at this point in the history
  • Loading branch information
mschoch committed Sep 3, 2014
1 parent 33733ba commit 2c10ce9
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 90 deletions.
75 changes: 32 additions & 43 deletions mapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
90 changes: 43 additions & 47 deletions mapping_example1.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 2c10ce9

Please sign in to comment.