我有一个模型'ModelA',与'ModelB'有一个has_many关系。
ModelB有一个描述:text列和一天:interger列(工作日为0-6)。
我正在为ModelA中的ModelB索引列,因此我可以搜索ModelA。
摘自ModelA中的索引块:
indexes model_bs.description, as: :model_b_description
has model_bs.day, as: :model_b_day
set_property field_weights: {
model_b_description: 10
}
我想ModelA.search('some description')
但是使用model_b_day过滤返回的结果,确保我搜索的描述是在特定日期(假设为:model_b_day => 5
)。
我可以使用with: { day: 5 }
进行搜索,但这会返回与日期列匹配的ModelB,而不是当天是否与搜索AND匹配。
非常感谢任何帮助!
编辑:我应该注意到我正在使用思考sphinx v2.0.13
答案 0 :(得分:1)
Sphinx没有键/值对的概念(哈希,词典,无论你想要什么),所以它不知道描述与你的ModelA索引中的一天有关 - 它只是有一堆描述将每个ModelA记录整合成一个字符串和一堆整数数组。
此方案中更好的解决方案是搜索ModelB:
define_index do
indexes description
has day
set_property field_weights: {description: 10}
end
那样就是字段和属性之间的关系(因为它是每条记录的单个值)。您还可以通过关联提取ModelA数据(我猜测ModelB中有匹配的belongs_to :model_a
)。