// Copyright (c) 2014 Couchbase, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package bleve import ( "expvar" "io/ioutil" "log" "time" "github.com/blevesearch/bleve/index" "github.com/blevesearch/bleve/index/store/gtreap" "github.com/blevesearch/bleve/index/upsidedown" "github.com/blevesearch/bleve/registry" "github.com/blevesearch/bleve/search/highlight/highlighter/html" // force import of scorch so its accessible by default _ "github.com/blevesearch/bleve/index/scorch" ) var bleveExpVar = expvar.NewMap("bleve") type configuration struct { Cache *registry.Cache DefaultHighlighter string DefaultKVStore string DefaultMemKVStore string DefaultIndexType string SlowSearchLogThreshold time.Duration analysisQueue *index.AnalysisQueue } func (c *configuration) SetAnalysisQueueSize(n int) { c.analysisQueue = index.NewAnalysisQueue(n) } func newConfiguration() *configuration { return &configuration{ Cache: registry.NewCache(), analysisQueue: index.NewAnalysisQueue(4), } } // Config contains library level configuration var Config *configuration func init() { bootStart := time.Now() // build the default configuration Config = newConfiguration() // set the default highlighter Config.DefaultHighlighter = html.Name // default kv store Config.DefaultKVStore = "" // default mem only kv store Config.DefaultMemKVStore = gtreap.Name // default index Config.DefaultIndexType = upsidedown.Name bootDuration := time.Since(bootStart) bleveExpVar.Add("bootDuration", int64(bootDuration)) indexStats = NewIndexStats() bleveExpVar.Set("indexes", indexStats) initDisk() } var logger = log.New(ioutil.Discard, "bleve", log.LstdFlags) // SetLog sets the logger used for logging // by default log messages are sent to ioutil.Discard func SetLog(l *log.Logger) { logger = l }