思考Sphinx从同一个连接表中搜索不同的条件?

时间:2013-04-03 15:02:45

标签: ruby-on-rails-3 sphinx thinking-sphinx

这个问题类似于

How do you search for different conditions from the same join table?,但我没有从this.z获得解决方案。

我的代码

has_one    :insurance_type_link, as: :enumerable, class_name: "Utility::UserDefinedEnumLink",
         conditions: {user_defined_enum_links: {user_defined_enum_id: Utility::UserDefinedEnum.insurance_types.map(&:id)}}
has_one    :payment_duration_link, as: :enumerable, class_name: "Utility::UserDefinedEnumLink",
         conditions: {user_defined_enum_links: {user_defined_enum_id: Utility::UserDefinedEnum.payment_durations.map(&:id)}}

我的define_index有这个

indexes insurance_type_link.user_defined_enum.enum_value,  as: :it, sortable: :insensitive
indexes payment_duration_link.user_defined_enum.enum_value, as: :pd, sortable: :insensitive

在development.sphinx.conf里面生成的sql查询是

AS `it_sort`, LOWER(IFNULL(`user_defined_enums_user_defined_enum_links`.`enum_value`, '')) 
AS `pd_sort`, IFNULL(`user_defined_enums`.`enum_value`, '')

因此,它会对关系生成不同的查询,因此只有第一个查询才能给出正确的搜索结果。

如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我使用快捷方法修复它,不确定它是否可以...我定义了第三个关系,其中包含我之前定义的关系,仅用于搜索 并在define_index方法中使用它。