0

所以,我有一个名为 Fundraiser 的课程:

class Fundraiser    
  def search!
    search = Tire::Search::Search.new('fundraisers')
    search.query { all }
    search.filter :range, {id: {gt: 1}}
    search.results
    binding.pry
  end
end

当我窥探它并查看“搜索”变量时,我没有得到任何结果

[1] pry()> search
=> #<Tire::Search::Search:0x007fb3d9d13938
 @filters=[{:range=>{:id=>{:gt=>1}}}],
 @indices=["fundraisers"],
 @options={},
 @path="/fundraisers/_search",
 @types=[]>

即使我有两个 ID 高于“1”的筹款人

[2] pry()> Fundraiser.all.map(&:id)
=> [1, 2, 3]

我究竟做错了什么?我已经用我能想到的所有方式重写了这个。另外值得注意的是,如果我对说“created_at”作为 gt/lt 时间戳进行类似的过滤,我不会得到任何结果。

更新:

我已经添加了搜索调用的queryandresults部分,但我仍然没有得到结果......

=> #<Tire::Results::Collection:0x007f92f3302b58
 @facets=nil,
 @max_score=0.0,
 @options={},
 @response=
  {"took"=>0,
   "timed_out"=>false,
   "_shards"=>{"total"=>5, "successful"=>5, "failed"=>0},
   "hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}},
 @time=0,
 @total=0,
 @wrapper=Tire::Results::Item>
4

1 回答 1

0

您已经创建了一个搜索,但您还没有执行它(通过调用.results它)

此外,我很确定您必须定义一个查询,即使它只是

search.query { all }

您可能还希望考虑使用过滤查询,尽管在顶层添加过滤器也可以。

于 2013-06-05T19:08:45.093 回答