【问题标题】:comparison Operators in thinking SphinixSphinx 中的比较运算符
【发布时间】:2014-12-06 12:18:44
【问题描述】:

我有一个具有 start_date 和 end_date 属性的模型。我有搜索表单,用户将在其中输入日期,如果日期介于 start_date 和 end_date 之间,我应该从模型中获取数据。

我应该如何使用思考狮身人面像创建查询。

【问题讨论】:

    标签: ruby-on-rails thinking-sphinx


    【解决方案1】:

    您需要执行以下操作:

    • 将 start_date 和 end_date 作为 attributes(不是字段)添加到模型的 Sphinx 索引中。
    • 将表单参数转换为日期或时间值
    • 使用范围filters 来限制搜索查询。

    我选择了非常大的时间窗口,但本质上这确保给定日期等于或大于开始日期并且小于或等于结束日期。

    beginning, ending = Time.utc(1970), Time.utc(2030)
    Model.search :with => {
      :start_date => beginning..date_from_params,
      :end_date   => date_from_params..ending
    }
    

    【讨论】:

    • 感谢帕特。这对我有帮助。有没有办法将 sql 查询添加到 ThinkingSphinx::Search 结果中。
    • 您可以通过一些选项发送结果 SQL 查询 - :include:joins:select:order,如文档中所述:pat.github.io/thinking-sphinx/searching.html#advanced - 但事实并非如此没有任何选项可以添加到 WHERE 子句(无论如何都不推荐 - 它会破坏 Sphinx 的分页逻辑)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多