Go语言bleve搜索引擎默认最多返回10条结果,如何调整获取全量数据?
问题原因
bleve 搜索请求默认设置了返回结果数量上限,bleve.NewSearchRequest() 生成的请求默认最多返回10条匹配结果,属于框架默认分页配置,不是索引数据异常。
解决方案
直接修改搜索请求的 Size 字段即可调整返回上限,你可以根据预期的最大匹配数设置对应值,若要获取全量匹配结果,既可以先查询总匹配数后再设置对应Size,也可以直接设置一个大于预估总匹配数的数值。
修改后的示例代码如下:
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) // 新增此行调整返回结果上限,此处设为100足够覆盖你场景中的35条结果 search.Size = 100 searchRez, _ := searcher.Search(search) t.Error(len(searchRez.Hits)) }
如果你的数据量级很大,不建议一次性将Size设置过大避免内存占用过高,可以配合From字段做分页遍历:每次查询固定Size的结果,From参数依次递增(0、100、200...),直到返回的Hits数量小于Size即完成全量遍历。
内容的提问来源于stack exchange,提问作者d1nch8g
相关产品推荐
相关产品推荐

