ThinkinSphinx查询不使用sphinx_选择,有四个条件
我尝试使用ThinkingSphinx返回开始日期在某个范围内或结束日期在同一范围内的记录,基本上是在该范围内开始或结束的任何记录 为此,我将使用计算属性和sphinx_select,并结合日期范围的建议,如下所示(假设有两条记录,记录a从范围外开始,但在范围内结束,记录b从范围内开始和结束):ThinkinSphinx查询不使用sphinx_选择,有四个条件,sphinx,thinking-sphinx,Sphinx,Thinking Sphinx,我尝试使用ThinkingSphinx返回开始日期在某个范围内或结束日期在同一范围内的记录,基本上是在该范围内开始或结束的任何记录 为此,我将使用计算属性和sphinx_select,并结合日期范围的建议,如下所示(假设有两条记录,记录a从范围外开始,但在范围内结束,记录b从范围内开始和结束): with_display=“*,IF(start_at>=#{range_start.to_i},1,0)+”+ “如果(起始点=#{range_start.to_i},10,0)+”+ “如果(end
with_display=“*,IF(start_at>=#{range_start.to_i},1,0)+”+
“如果(起始点=#{range_start.to_i},10,0)+”+
“如果(end_at=#{range_start.to_i},1,0)+”+
“如果(起始点=#{range_start.to_i},10,0)+”+
“如果(end_at我刚刚意识到我的数学是错误的,考虑到我想处理的案例:
- 记录a的
显示值为21
- 记录b的
显示为22
我需要做的是将阵列更改为:
{
sphinx_select: with_display,
with: {'display' => [12, 21, 22]},
}
为了处理在范围(21)内结束的记录、在范围(12)内开始的记录以及在范围(22)内开始和结束以外的记录的情况
with_display = "*, IF(start_at >= #{range_start.to_i}, 1, 0) + " +
"IF(start_at <= #{range_end.to_i}, 1, 0) AS display"
=> [record_b]
with_display = "*, IF(end_at >= #{range_start.to_i}, 10, 0) + " +
"IF(end_at <= #{range_end.to_i}, 10, 0) AS display"
=> [record_a, record_b]
{
sphinx_select: with_display,
with: {'display' => [12, 21, 22]},
}