From f11ae963b1d73a5290db68c495c291de81bb6a58 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Thu, 8 Oct 2020 17:06:31 +0200 Subject: [PATCH] Fix index types --- accounts/pkg/service/v0/service.go | 95 +----------------------------- 1 file changed, 2 insertions(+), 93 deletions(-) diff --git a/accounts/pkg/service/v0/service.go b/accounts/pkg/service/v0/service.go index d18a7f032..c15452433 100644 --- a/accounts/pkg/service/v0/service.go +++ b/accounts/pkg/service/v0/service.go @@ -72,14 +72,14 @@ func (s Service) buildIndex() (*indexer.Indexer, error) { // Accounts - if err := idx.AddIndex(&proto.Account{}, "DisplayName", "Id", "accounts", "unique"); err != nil { + if err := idx.AddIndex(&proto.Account{}, "DisplayName", "Id", "accounts", "non_unique"); err != nil { return nil, err } if err := idx.AddIndex(&proto.Account{}, "Mail", "Id", "accounts", "unique"); err != nil { return nil, err } - if err := idx.AddIndex(&proto.Account{}, "OnPremisesSamAccountName", "Id", "accounts", "non_unique"); err != nil { + if err := idx.AddIndex(&proto.Account{}, "OnPremisesSamAccountName", "Id", "accounts", "unique"); err != nil { return nil, err } @@ -100,97 +100,6 @@ func (s Service) buildIndex() (*indexer.Indexer, error) { } -/* -func (s Service) buildIndex() (index bleve.Index, err error) { - indexDir := filepath.Join(s.Config.Server.AccountsDataPath, "index.bleve") - if index, err = bleve.Open(indexDir); err != nil { - if err != bleve.ErrorIndexPathDoesNotExist { - s.log.Error().Err(err).Msg("failed to read index") - return - } - - indexMapping := bleve.NewIndexMapping() - // keep all symbols in terms to allow exact maching, eg. emails - indexMapping.DefaultAnalyzer = keyword.Name - // TODO don't bother to store fields as we will load the account from disk - - // Reusable mapping for text - standardTextFieldMapping := bleve.NewTextFieldMapping() - standardTextFieldMapping.Analyzer = standard.Name - standardTextFieldMapping.Store = false - - // Reusable mapping for text, uses english stop word removal - simpleTextFieldMapping := bleve.NewTextFieldMapping() - simpleTextFieldMapping.Analyzer = simple.Name - simpleTextFieldMapping.Store = false - - // Reusable mapping for keyword text - keywordFieldMapping := bleve.NewTextFieldMapping() - keywordFieldMapping.Analyzer = keyword.Name - keywordFieldMapping.Store = false - - // Reusable mapping for lowercase text - err = indexMapping.AddCustomAnalyzer("lowercase", - map[string]interface{}{ - "type": custom.Name, - "tokenizer": unicode.Name, - "token_filters": []string{ - lowercase.Name, - }, - }) - if err != nil { - return - } - lowercaseTextFieldMapping := bleve.NewTextFieldMapping() - lowercaseTextFieldMapping.Analyzer = "lowercase" - lowercaseTextFieldMapping.Store = true - - // accounts - accountMapping := bleve.NewDocumentMapping() - indexMapping.AddDocumentMapping("account", accountMapping) - - // Text - accountMapping.AddFieldMappingsAt("display_name", standardTextFieldMapping) - accountMapping.AddFieldMappingsAt("description", standardTextFieldMapping) - - // Lowercase - accountMapping.AddFieldMappingsAt("on_premises_sam_account_name", lowercaseTextFieldMapping) - accountMapping.AddFieldMappingsAt("preferred_name", lowercaseTextFieldMapping) - - // Keywords - accountMapping.AddFieldMappingsAt("mail", keywordFieldMapping) - - // groups - groupMapping := bleve.NewDocumentMapping() - indexMapping.AddDocumentMapping("group", groupMapping) - - // Text - groupMapping.AddFieldMappingsAt("display_name", standardTextFieldMapping) - groupMapping.AddFieldMappingsAt("description", standardTextFieldMapping) - - // Lowercase - groupMapping.AddFieldMappingsAt("on_premises_sam_account_name", lowercaseTextFieldMapping) - - // Tell blevesearch how to determine the type of the structs that are indexed. - // The referenced field needs to match the struct field exactly and it must be public. - // See pkg/proto/v0/bleve.go how we wrap the generated Account and Group to add a - // BleveType property which is indexed as `bleve_type` so we can also distinguish the - // documents in the index by querying for that property. - indexMapping.TypeField = "BleveType" - - // for now recreate index on every start - if err = os.RemoveAll(indexDir); err != nil { - return - } - if index, err = bleve.New(indexDir, indexMapping); err != nil { - return nil, err - } - } - return -} - -*/ - func (s Service) createDefaultAccounts() (err error) { accounts := []proto.Account{ {