" OperationalError,无法识别的令牌"在搜索时

时间:2017-10-31 11:30:26

标签: django search full-text-search django-queryset

我在进行任何搜索查询时收到此错误:

OperationalError at /search/
unrecognized token: "@"

我的观点:

class Search(ListView):

    model = Opinion
    template_name = 'home/search.html'
    context_object_name = 'search_results'
    paginate_by = 10

    def get_queryset(self):
        qs = Opinion.objects.all()

        keywords = self.request.GET.get('q')
        if keywords:
            query = SearchQuery(keywords)
            vector = SearchVector('text')
            qs = qs.annotate(search=vector).filter(search=query)
            qs = qs.annotate(rank=SearchRank(vector, query)).order_by('-rank')

        return qs

我的搜索表单:

<form class="navbar-form navbar-left" role="search" method="get" action="{% url 'home:search' %}">
    <div class="form-group">
        <input type="text" class="form-control" name="q" value="">
    </div>
    <button type="submit" class="btn btn-default">Search</button>
</form>

任何建议或反馈都将受到欢迎并受到高度赞赏。

谢谢。

1 个答案:

答案 0 :(得分:4)

确保您使用的是PostgreSQL数据库。

当我尝试搜索我的本地数据库时,我遇到了这个错误,这是SQLite。