ThinkingSphinx를 사용하여 시작 날짜가 범위 내에 있거나 종료 날짜가 같은 범위, 기본적으로이 범위에서 시작되거나 끝나는 모든 레코드를 반환하려고합니다. 이렇게하려면thinkinSphinx 쿼리가 4 가지 조건으로 sphinx_select와 작동하지 않습니다.
, 나는 다음과 같이 (두 개의 레코드가있는 가정 this post이 날짜 범위에 대한 제안 무엇과 함께 per the documentation로 계산 된 속성과 sphinx_select을 사용하고, record_a의 범위 밖에서 시작하지만, 범위 및 record_b 내 종료 시작 및 범위 끝) : 나는 단지 start_at 조건을 사용하는 경우
with_display = "*, IF(start_at >= #{range_start.to_i}, 1, 0) + " +
"IF(start_at <= #{range_end.to_i}, 1, 0) + " +
"IF(end_at >= #{range_start.to_i}, 10, 0) + " +
"IF(end_at <= #{range_end.to_i}, 10, 0) AS display"
{
sphinx_select: with_display,
with: {'display' => [2, 20, 22]},
}
=> [record_b]
그러나, 나는 하나 개의 레코드를 얻을, 나는 단지 end_at 조건을 사용하는 경우, 그것은 모두 레코드를 반환합니다. 내가 올바르게 이해 해요 경우 record_a 20의 display
값이 있어야하기 때문에 record_b (22)의 display
값이 있어야합니다 동안
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]
, 네 가지 조건을 가지고,,, record_a 및 record_b 모두 반환되는 결과합니다.
내가 누락 된 항목이 있습니까?