【问题标题】:How to increase (or access) Go bleve search engine results?如何增加(或访问)Go bleve 搜索引擎结果?
【发布时间】:2021-09-20 17:07:59
【问题描述】:

当我尝试使用 bleve 进行搜索查询时,我总是得到 10 个或更少的结果。如何增加此限制或在所有数据之间进行搜索?

这是代码示例,我希望得到 35 个结果,但得到 10 个(ps calc.Rand() 函数给出随机字节):

package search

import (
    "testing"

    "github.com/blevesearch/bleve/v2"
)

func TestSearcher(t *testing.T) {
    mapping := bleve.NewIndexMapping()
    searcher, _ := bleve.New("search/src", mapping)
    for i := 0; i < 35; i++ {
        searcher.Index(string(calc.Rand()), "stuff")
    }

    query := bleve.NewMatchQuery("stuff")
    search := bleve.NewSearchRequest(query)
    searchRez, _ := searcher.Search(search)
    t.Error(len(searchRez.Hits))
}

我得到的结果:

--- FAIL: TestSearcher (2.33s)
    /Users/ ... /search/search_test.go:86: 10

我期望的结果:

--- FAIL: TestSearcher (2.33s)
    /Users/ ... /search/search_test.go:86: 35

如何访问此索引存储的所有 35 个值?

【问题讨论】:

    标签: go search bleve


    【解决方案1】:

    SearchRequest上设置字段Size

    Size/From 描述要返回结果集的多少和哪一部分。

        search := bleve.NewSearchRequest(query)
        search.Size = 35 // or the page size you want
    
        searchRez, _ := searcher.Search(search)
        fmt.Println(len(searchRez.Hits)) // prints 35
    

    或使用分页,您可以根据页面大小递增地设置字段From。一个人为的例子:

        count, _ := searcher.DocCount()
        for i := 0; i < int(count); i += 10 /* page size */ {
            search.From = i
            searchRez, _ := searcher.Search(search)
            fmt.Println(len(searchRez.Hits)) // prints 10 10 10 5
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多