我正在使用Tire和ElasticSearch。我需要以编程方式创建过滤器,所以我不想使用简单的搜索方法。简单的方法很好用:
Item.search("blender",:page => 1, :per_page => 1)
这将返回第一个匹配,当您发送page = 2时,它返回空集,这是正确的(对于此数据集)。
但是,当您使用间接方法时:
search = Tire::Search::Search.new("items", :page => 2)
search.query { string('name:blender') }
search.results.count
这总是返回1,无论你为页面发送什么值,你都可以发送100,000,它仍然会返回第一项。
感谢您的帮助。
答案 0 :(得分:1)
以下是答案:
search = Tire::Search::Search.new("items")
search.from 1 #use from and size for pagination with indirect queries
search.size 1
search.query { string('name:blender') }
search.results.count
希望这有助于其他人。