我有一个与'ModelB'具有has_many关系的模型'ModelA'。
ModelB具有description:text列和day: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 }
,但这将返回与day列匹配的ModelB,而不是描述是否与当天的搜索AND相匹配。
任何帮助将不胜感激!
编辑:我应该注意我正在使用思想狮身人面像v2.0.13
Sphinx没有键/值对的概念(散列,字典,无论您想称呼它们为什么),因此它不知道描述与ModelA索引中的一天相关-它只是将一堆描述混在一起每个ModelA记录的单个字符串和一整天的整数数组。
在这种情况下,更好的解决方案是在ModelB上进行搜索:
define_index do
indexes description
has day
set_property field_weights: {description: 10}
end
这样坐是外地和属性之间的关系(因为它是每记录的一个单一的值)。您也可以通过关联来获取ModelA数据(我猜想belongs_to :model_a
ModelB中存在匹配项)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句