【问题标题】:How to return two different search results in one in searchkick (ElasticSearch)如何在searchkick(ElasticSearch)中将两个不同的搜索结果合二为一
【发布时间】:2018-01-08 12:33:46
【问题描述】:

我有这两个搜索

foods = Food.search name, fields: [:name], where: {
   or: [
    [{nutritionist_id: nil}, {nutritionist_id: current_nutritionist_id}]
   ]
}, order: {_score: :desc}

recipes = Recipe.search name, fields: [:recipe_name], where: {
   or: [
        [{nutritionist_id: nil}, {nutritionist_id: current_nutritionist_id}]
      ]
 }, order: {_score: :desc}

我希望 foodsrecipes 以相同的结果返回。就像合并它们,类似上面的东西或其他更好的方法。

return foods + reciples

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick


    【解决方案1】:

    我通过Searchkick.search 解决了这个问题 而不是:

    foods = Food.search name, fields: [:name], where: {
       or: [
        [{nutritionist_id: nil}, {nutritionist_id: current_nutritionist_id}]
       ]
    }, order: {_score: :desc}
    

    recipes = Recipe.search name, fields: [:recipe_name], where: {
       or: [
            [{nutritionist_id: nil}, {nutritionist_id: current_nutritionist_id}]
          ]
     }, order: {_score: :desc}
    

    我用过。

    result = Searchkick.search(name, index_name: [Food, Recipe], fields: [:name, :recipe_name], 
      where: {
          _or: [ {nutritionist_id: nil}, {nutritionist_id: current_nutritionist_id} ]
      }, order: {_score: :desc})
    result
    

    这样 Searchkick 在这两个模型中搜索 FoodRecipe 并返回包含两个结果的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      相关资源
      最近更新 更多