def METHOD_NAME(cls, user):
    vector = _multi_search_vector("slug", weight="A") \
             + _multi_search_vector("full_name", weight="A") \
             + _multi_search_vector("email", weight="A") \
             + _multi_search_vector("bio", weight="B") \
             + _multi_search_vector("company", weight="B") \
             + _multi_search_vector("country", weight="C") \
             + _multi_search_vector("city", weight="C") \
             + _multi_search_vector("contact", weight="C")
    user_index = User.objects\
        .annotate(vector=vector)\
        .filter(id=user.id)\
        .values_list("vector", flat=True)\
        .first()
    intro_index = Post.objects.filter(author=user, type=Post.TYPE_INTRO)\
        .annotate(vector=_multi_search_vector("text", weight="B"))\
        .values_list("vector", flat=True)\
        .first()
    if user.moderation_status == User.MODERATION_STATUS_APPROVED:
        SearchIndex.objects.update_or_create(
            user=user,
            defaults=dict(
                type=SearchIndex.TYPE_USER,
                index=(user_index or "") + " " + (intro_index or ""),
                created_at=user.created_at,
                updated_at=datetime.utcnow(),
            )
        )
    else:
        SearchIndex.objects.filter(user=user).delete()