Given 1000 objects, indexing with or without batch, results in large directory size differences.
package main
import (
"fmt"
"log"
"os"
)
type documentIndex struct {
ID string `json:"id"`
Type string `json:"type"`
Content string `json:"content"`
}
type Indexer interface {
Index(id string, data interface{}) error
}
func main() {
os.RemoveAll("example.scorch")
writeInBatch := false
// open a new index
keywordFieldMapping := bleve.NewTextFieldMapping()
keywordFieldMapping.Store = false
keywordFieldMapping.IncludeInAll = false
keywordFieldMapping.IncludeTermVectors = false
keywordFieldMapping.Analyzer = keyword.Name
docMapping := bleve.NewDocumentMapping()
// name
docMapping.AddFieldMappingsAt("name", keywordFieldMapping)
// content
docMapping.AddFieldMappingsAt("content",
keywordFieldMapping)
mapping := bleve.NewIndexMapping()
mapping.AddDocumentMapping("content", docMapping)
// mapping.DefaultAnalyzer = "en"
mapping.TypeField = "type"
writeTestData := func(indexer Indexer) {
for i := 0; i < 1000; i++ {
keyID := fmt.Sprintf("%v", i)
data := documentIndex{
ID: keyID,
Type: "content",
Content: fmt.Sprintf(content, i),
}
indexer.Index(keyID, data)
}
}
index, err := bleve.NewUsing("example.scorch", mapping, scorch.Name, scorch.Name, nil)
if err != nil {
fmt.Println(err)
return
}
if writeInBatch {
batch := index.NewBatch()
writeTestData(batch)
// results in 10.3 MB of data
err = index.Batch(batch)
if err != nil {
log.Fatal(err)
}
} else {
// results in 3.5 GB of data
writeTestData(index)
}
// search for some text
query := bleve.NewMatchQuery("travelling")
search := bleve.NewSearchRequest(query)
search.Highlight = bleve.NewHighlight()
searchResults, err := index.Search(search)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(searchResults)
log.Printf("%+v", index.Stats())
}
const content = `Sentiments two occasional affronting solicitude travelling and one contrasted. Fortune day out married parties. Happiness remainder joy but earnestly for off. Took sold add play may none him few. If as increasing contrasted entreaties be. Now summer who day looked our behind moment coming. Pain son rose more park way that. An stairs as be lovers uneasy. Another journey chamber way yet females man. Way extensive and dejection get delivered deficient sincerity gentleman age. Too end instrument possession contrasted motionless. Calling offence six joy feeling. Coming merits and was talent enough far. Sir joy northward sportsmen education. Discovery incommode earnestly no he commanded if. Put still any about manor heard. food%i.`