Недавно начал изучать джанго, сейчас столкнулся с вопросом поиска по базе данных. Есть модель объявления о работе, необходимо организовать поиск по названию позиции, скилам (скилы указываются через запятую), городу и заработной плате. Сделал реализацию с использованием Q выражений. Особенно не понравился момент с полем скилов, так как я создаю Q выражение для каждого ключевого слова. Получается очень грязная реализация. В продакшине предполагаю, что будет возможно 20-30 объявлений в день, не более 500-600 объявлений одновременно активных для поиска. Вопрос, стоит ли использовать сфинкс и другие библиотеки для полнотекстового поиска, или оставить реализацию как есть?
Не очень понятно как используете Q для каждого слова, просто собираете из них выражение с __icontains через filter по цепочке? Оно и так по идее использует полнотекстовый поиск, если БД позволяет, емнип. А БД какая вообще?
barker, да, верно, собираю из них выражение в цепочке. Сейчас локально использую sqlite, в продакшине планирую использовать pgsql. Когда гуглил, везде пишут, что это грязная реализация, и было бы правильно использовать сфинкс для этих целей. В моем случае, мне необходимо производить поиск по разным полям, и хотелось бы использовать точное совпадение. И в последнее время начали мучать сомнения, правильно ли сделал, что реализовал через Q выражения. Спасибо.
Большое спасибо всем за дельные советы. Решил, что запущу сайт с текущей реализацией, а позже, если будет необходимость, начну использовать сторонние библиотеки для полнотекстового поиска.