У меня есть модель UserProfile с 35 полями (Char, Int, Bool, Dec, M2M, FK). В рамках функции просмотра поиска одно из полей требует полнотекстового поиска, а остальные 34 поля будут использоваться для обеспечения «расширенной фильтрации поиска» (с использованием: __gte, __ lte, __ Exact, __in, __startswith). «Поисковый» запрос может использовать от 5 до 35 полей в качестве критериев просмотра поиска.
Я использую haystack для создания SearchIndex, и в настоящее время добавлены все 35 полей, но это кажется неэффективным, поскольку я обхожу django ORM (?).
ответ от Фильтровать результаты Django Haystack, такие как QuerySet?, предполагает, что Я мог бы просто сохранить одно поле полнотекстового поиска в SearchIndex и объединить SearchQuerySet с QuerySet django для оставшихся 34 полей фильтра. Мог бы я тогда использовать db_index = True для некоторых или всех этих полей в моей модели django? Будет ли использование этого двухэтапного подхода слияния запросов хорошо масштабироваться для получения тысяч результатов?
Поскольку моя модель UserProfile может вырасти до 300–2 млн записей, я пытаюсь понять, как лучше всего проиндексировать эту модель. Поскольку я новичок в индексировании и поиске в БД, я ищу любые идеи о том, как лучше всего оптимизировать мою базу данных.