我目前在我的个人项目中使用 PostgreSQL、Python 和 Django。该网页有一个搜索栏,我使用 SearchVector 开始工作。我遇到的问题是我的搜索栏函数和 request.GET 方法返回一个元组,并且搜索向量在我的数据库中搜索那个确切的短语。基本上单个单词搜索工作正常,但是一旦有人输入另一个单词或短语,那个确切的短语必须在数据库中,否则不会返回任何内容。
例如:我在搜索中输入了“god”这个词,所有带有“god”的条目都显示得很好。但是我将短语“神蛇”放入搜索中,即使有包含这些词的条目,也没有出现任何内容。
这是我的搜索栏功能:
def searchbar(request):
if request.method == "GET":
search = request.GET["search"],
print(search)
print(search[0])
deity = Deity.objects.annotate(search=SearchVector('name', 'location',
'alt_name', 'culture', 'religion', 'description',
'pop_culture'),).filter(search=SearchQuery(search[0], search_type='phrase')),
context = {
"user": User.objects.get(id = request.session['user_id']),
"deity": deity,
"search": search[0],
}
return render(request, 'search_results.html', context)