Rails Searchkick Elasticsearch匹配多个单词搜索

时间:2018-09-05 12:16:04

标签: ruby-on-rails elasticsearch searchkick

我的产品模型具有名称,性别,描述等列,并且这些列通过search_data 方法包含在elasticsearch索引中。

假设我的产品具有以下值

name: 'No Boyfriend No Problem Crop Jumper'
gender : 'women'
description: 'Best crop jumber for now'

当我搜索“妇女跳线”一词时

该产品未出现在搜索结果中。 我正在尝试通过以下查询搜索产品

@products = Product.search(
              params[:q],
              fields: [:gender, :name, :description],
              match: :word_start,
              page: params[:page],
              per_page: Product::PAGE
            )

我应该如何更新我的产品搜索,以使“女士作物套头衫”搜索字词结果包含上述产品。

谢谢

1 个答案:

答案 0 :(得分:0)

截至目前看起来像this isn't possible。但是,您可以执行以下操作,它应该可以工作:

def search_data
  {
    name: name,
    gender: gender,
    description: description,
    all_fields: [name, gender, description].compact.join(' ')
  }
end

然后,您只需在查询中搜索all_fields字段即可。