【发布时间】:2015-01-28 21:41:38
【问题描述】:
我将耐嚼的 gem 用于带有 Rails 的 elasticSearch。我有相关文档,我想在结果中同时显示带有突出显示的字段和其他一些字段。
当我返回搜索结果时,突出显示“主”记录中的匹配项,而不是“相关记录”中的匹配项(不确定正确的术语是什么)。
我的 search_index.rb 看起来像这样:
define_type PlayList.includes(:play_list_items,:user) do
field :title
field :description
field :thumb_missing, value: ->{intro_image_file_name.nil?}
field :thumb_square, value: ->{intro_image(:thumb_square)}
field :play_list_items do
field :item_title, value: ->{title}
field :commentary_text
field :thumb_square, value: ->{get_image(:thumb_square)}
end
field :user do
field :name
field :avatar, value: ->{avatar(:tiny)}
end
end
查询看起来像这样
@play_lists = SearchIndex::PlayList.query(multi_match: {
query: params[:term],
fields: ["title","description","item_title","commentary_text"]
}).highlight(
pre_tags:["<mark>"],
post_tags:["</mark>"],
fields: {
title:{},
description:{},
item_title:{},
commentary_text:{}
})
当我在标题上找到匹配项时,title 方法会返回标题文本并突出显示该术语。但是,我总是将 play_List_items 作为没有突出显示的哈希数组返回。
当我使用“to_a”进行序列化时,我看到在 _data 中有一个名为“highlight”的字段的哈希,其中包含突出显示,但它只有匹配的字段,所以我不知道如何将关联的 thumb_square(出现在 _data.source 中)与 item_title 一起突出显示。
我不知道这是否与耐嚼的 gem 或一般的弹性搜索有关。
【问题讨论】:
-
您好,您找到问题的答案了吗?顺便问一下,你知道如何对字段进行加权吗?
-
我没有找到一个优雅的解决方案。我最终不得不取出突出显示的项目并删除突出显示以将它们与 play_list_items 哈希匹配。
标签: ruby-on-rails elasticsearch highlighting chewy-gem