Я создаю блог, в котором я хочу выполнить поисковый запрос на основе рейтинга (1-5).Здесь мой поиск будет похож на запрос: «обновления технологий смартфонов», рейтинг: «3».Результатом должен быть список сообщений, содержащих слово запроса (хотя бы одно слово) с рейтингом 3, отсортированным по значению val (для каждого слова запроса, если оно найдено в заголовке val + = 1, если найдено в содержимом val + = 0.4).
Мой файл models.py содержит следующее:
class Post(models.Model):
title = models.CharField(max_length=50)
content = models.CharField(max_length=500)
rating = models.IntegerField(default=1)
enter code here
date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
Мой файл view.py содержит следующее:
def search(request):
contents = Post.objects.all()
if request.method == 'GET':
query = request.GET['query']
rating = request.GET['rating']
# search function
# contents = InSearch.search_fun(contents,query,rating)
vector = SearchVector('title', weight='A') + SearchVector('content', weight='B')
qry = SearchQuery(str(query))
contents = Post.objects.annotate(rank=SearchRank(vector, qry)).order_by('-rank')
#print("---->\n\t"+query+ str(contents))
context = {
'contents': contents
}
else:
context = {
'contents': Post.objects.all()
}
return render(request, 'feed/home.html', context)
Мои urls.py:
urlpatterns = [
#...
path('feed/search-result/', views.search, name='feed_search'),
]
Я получаю эту ошибку django.db.utils.OperationalError: no such function: plainto_tsquery