Эквивалент повторного поиска для запроса MySQL

Я ищу эквивалент Redsearch следующего запроса:

NOT (topic_id = '123' AND post_id <= '456')

Я попробовал следующее - это работает, но не похоже на самое элегантное решение:

-(@topic_id:[123 123] @post_id:[-inf 456])

topic_id и post_id являются ЧИСЛОВЫМИ и СОРТИРУЕМЫМИ.

Спасибо за вашу помощь!


person J. Chris    schedule 14.05.2021    source источник


Ответы (1)


Крис, Ваш запрос выглядит вполне корректным, единственное упрощение, которое я бы применил, это:

-(@topic_id:123 @post_id:[-inf 456])

Чтобы не повторять значение 123. Другим вариантом было бы использовать закон ДеМоргана и переписать ваш NOT(A AND B) в (!A OR !B), но я не думаю, что это даст вам что-нибудь, и в этом случае, я думаю, это затруднит чтение.

person BSB    schedule 16.05.2021
comment
Итак, если тема_ид является ЧИСЛОМ, я могу сделать @topic_id: 123, и он не найдет 1234 и т. д.? Спасибо за вашу помощь! - person J. Chris; 17.05.2021