#django #postgresql
#django #postgresql
Вопрос:
Я хочу использовать rank для упорядочивания, но также мне нужен поиск с __contains для широкого запроса. Как я могу использовать contains
и SearchRank
одновременно?
vectors = SearchVector('title', weight='A') SearchVector('title_english', weight='A') SearchVector('content', weight='B') SearchVector('content_english', weight='B')
query = SearchQuery(value)
articles = Article.objects.annotate(
rank = SearchRank(vectors, query)
).filter(search__contains = 'rank', category=category).order_by('rank')
Примечание: я могу запрашивать таким образом, но не могу упорядочивать по рангу
vectors = SearchVector('title', weight='A') SearchVector('title_english', weight='A') SearchVector('content', weight='B') SearchVector('content_english', weight='B')
articles = Article.objects.annotate(
search = vectors
).filter(search__contains = value, category=category)
Комментарии:
1. можете ли вы поделиться дополнительным кодом? Я не понимаю, что ты там делаешь
2. @Florin Я только хочу знать, как добавить __contains (выражение%LIKE% в SQL) к параметру запроса в процессе SearchRank. Мой код не завершен. Приведенный выше код является просто примером
3. Если вы хотите фильтровать по строке, а не по внешнему ключу, вы можете сделать это следующим образом.
...filter(search__fieldName__contains=...). Where the
fieldName` — это поле из модели foreignkey4. @Florin Но я должен задать SearchQuery для использования SearchRank. По этой причине я не могу использовать поиск в фильтре
5. Вы нашли решение?