Как сделать поиск в Django с помощью SearchVector на ArrayField? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть модель компании с соответствующими тегами . Мне нужно настроить поиск по имени, содержимому и тегам, и если поиск работает с полями name , content , он не работает в ArrayField -> тегах

models.py
class Company(models.Model):
    name = models.CharField(max_length=150)
    content = models.TextField(blank=True)
    **tags** = ArrayField(models.CharField(max_length=200), blank=True, null=True


utils.py
def get_rank_search_result(q, category=None):
    ...
    vector = SearchVector('name', config='russian', weight='A') + \
             SearchVector('content', config='russian', weight='B') + \
             SearchVector('tags', config='russian', weight='B')

             #SearchVector(Func(F('tags'), Value(' '), function='array_to_string'), config='russian', weight='B')
             #doesnt work either


    query = SearchQuery(q, config='russian', search_type=search_type)
    return list(qs.annotate(rank=SearchRank(vector, query)).filter(rank__gte=0.3).order_by('-rank'))
    ```

Actually, the search stops working after i add line with SearchVector('tags')....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...