0
我一直在試圖弄清楚如何使用Tire使用嵌套對象進行混合布爾搜索。我發現的所有簡單示例都不包含更復雜的查詢(在其他屬性上搜索時)。使用Tire(和ElasticSearch)混合複雜布爾值時遇到問題
我的搜索涉及到找到需要特定類型人員的團隊。當試圖建立一個足球隊時,球隊需要填補某些類型的特定體重隊員的球員名單,可以選擇排除一個任期或另一個任期。
其他參數(如「地區」或「種類」)與團隊的參與地點以及團隊的類型(休閒,競爭等)有關。
我的當前設置:
mapping do
indexes :region, index: :not_analyzed
indexes :kind, index: :not_analyzed
indexes :role_requirements do
indexes :need, type: 'boolean'
indexes :weight_class_id, type: 'integer'
indexes :role_id, type: 'integer'
end
.
.
.
end
def self.search(params)
team_params = params[:team_search]
tire.search(page: params[:page], per_page: 10) do
query do
boolean do
must { string team_params[:query], default_operator: "AND" } if team_params[:query].present?
must { term :kind, team_params[:kind] } if team_params[:kind].present?
must { term :region, team_params[:region] } if team_params[:region].present?
if team_params[:weight_class_id].present? || team_params[:role_id].present?
must { term 'role_requirements.need', true }
end
must { term 'role_requirements.weight_class_id', team_params[:job_id].to_i } if team_params[:weight_class_id].present?
must { term 'role_requirements.role_id', team_params[:role_id].to_i } if team_params[:role_id].present?
.
.
.
end
end
end
end
我已經嘗試了多種方法,但通常似乎是一個問題或者與ElasticSearch不能分析不具有範圍內的方法事物或輪胎:
使用這種實現,這裏是產生to_json:https://gist.github.com/8a615e701eb31ff2e250
這是目前沒有給我任何結果。
所有不同的方法,我已經試過:https://gist.github.com/907c9571caa0e87bad27
都不是真正能夠給我充分的結果。