【发布时间】:2019-07-05 08:16:11
【问题描述】:
我正在创建一个博客,我想在其中执行基于评分 (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
【问题讨论】:
-
你为什么要在 sqlite 中使用 Postgres 函数?
-
我在 Django 文档中找到了该搜索查询。正如你所说,它是 postgers db 函数,我正在使用 sqlite。有没有办法通过 django 模型或 sqlite 查询得到我想要的东西
标签: python django sqlite search