| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package main
- import (
- "fmt"
- "github.com/blevesearch/bleve"
- "github.com/blevesearch/bleve/analysis/analyzer/keyword"
- _ "github.com/blevesearch/bleve/index/store/gtreap"
- "strconv"
- )
- func main() {
- mapping := bleve.NewIndexMapping()
- fm := bleve.NewTextFieldMapping()
- fm.Analyzer = keyword.Name
- dm := bleve.NewDocumentMapping()
- //dm.DefaultAnalyzer = keyword.Name
- dm.AddFieldMappingsAt("from", fm)
- //fmt.Println(dm.Properties["from"].DefaultAnalyzer)
- mapping.AddDocumentMapping("test", dm)
- mapping.DefaultType = "test"
- //tokens, err := mapping.AnalyzeText(keyword.Name, []byte("bleve indexing is easy"))
- //if err != nil {
- // panic(err)
- //}
- //for _, tk := range tokens {
- // fmt.Println(string(tk.Term))
- //}
- //return
- index, err := bleve.NewMemOnly(mapping)
- //index, err := bleve.NewUsing("", mapping, bleve.Config.DefaultIndexType, "gtreap", map[string]interface{}{})
- if err != nil {
- panic(err)
- }
- defer index.Close()
- for i := 0; i < 10; i ++ {
- id := "ID_" + strconv.FormatInt(int64(i+1), 10)
- n := i%5
- //fmt.Printf("DocID: %s %d\n", id, n)
- message := map[string]string{
- "id": id,
- "from": "marty.schoch@gmail.com 哈哈 中国" + strconv.Itoa(n),
- "body": "bleve indexing is easy",
- }
- if err = index.Index(message["id"], message); err != nil {
- panic(err)
- }
- }
- q := bleve.NewPrefixQuery("id_")
- //tq := bleve.NewTermQuery("easy")
- //tq.SetField("body")
- req := bleve.NewSearchRequest(q)
- req.Fields = []string{"from", "body"}
- facetReq := bleve.NewFacetRequest("from", 4) // 种类
- req.AddFacet("facet_name", facetReq)
- result, err := index.Search(req)
- if err != nil {
- panic(err)
- }
- for _, f := range result.Facets {
- for _, t := range f.Terms {
- fmt.Printf("[%s]%d\n", t.Term, t.Count)
- }
- }
- //for _, hit := range result.Hits {
- // docid, err := index.Document(hit.ID)
- // if err != nil {
- // panic(err)
- // }
- // fmt.Println(hit.ID, docid.Fields[0].Name(), string(docid.Fields[0].Value()))
- //}
- }
|