по нескольким полям в каждой модели замутить? через search engine, full text search (медленно работает почему то) или просто фильтрами regex или icontains?
Elastic search можешь заюзать
спасибо! а не в курсе, мне надо поля собрать в одну строку шаблоном и индексировать? или по отдельности каждое поле в шаблоне
SearchVectorField, но, да, надо забороть его медленность. (сам пока не добрался). Ну, или внешние индексы: эластик, солр и иже с ними.
Посмотрел доку по постргресу, вроде должно быстро работать, попробую raw и отпишусь попозже
Тоже почитать: https://www.paulox.net/2017/12/22/full-text-search-in-django-with-postgresql/
Спасибо большое! оказывается надо SearchVectorField создавать (If we want to speed up and simplify the query execution we can add a “search vector field” to the model and then execute searches on this specific field.) пойду траить
Трайте) тока сразу предупреждаю, fk через "__" не получится как обычно: Model.objects.filter (id=self.id).update ( search_vector =Subquery (Model.objects.filter (id=OuterRef ('id')).annotate ( search_vector_name=SearchVector ( "field1", "field2", 'field3__name', 'field4__name', 'field5__name', ).values ('search_vector_name') [:1]) ) search_vector - SearchVectorField И все это нужно делать ПОСЛЕ super(Model, self).save(*args, **kwargs)
спасибо Большое ещё раз! повсюду подводные камни ) А Вы реализовывали поиск адреса в одну строку по связанным моделям (может быть вектор всё-таки не очень хорошо тут). я сейчас как раз запихал фиас в джангу, в дальнейшим привязать к своим таблицам с геометрией. Судя по нику Вы должны знать ответ )
Нет, не должен) вообще, поиск по адресу это история про реверс геокодинг, и это, да, другое.
оке) попробую через вектор, не очень нравится, что помимо ES еще и drf какое ту приблуду натягивать надо. иначе там единая точка входа
Я в этом смысле - ленивая ж*па: https://github.com/DenisCarriere/geocoder
прикольно, спасибо ) это следующий этап
Обсуждают сегодня