我想知道如何在我的Django应用程序中改进这个全文搜索代码

时间:2017-09-05 16:59:19

标签: django postgresql full-text-search

代码可以正常工作,但我感觉我正在错误地构建查询。

def search_results(request):
    terms = request.GET['search_terms'].split()
    vector = SearchVector('title', 'subtitle', 'header_image', 'header_image_caption', 'excerpt', 'body', 'tags__name',)
    query = SearchQuery('')
    for term in terms:
        query = query | SearchQuery(term)
    results = Article.objects.annotate(search=vector).filter(search=query).order_by('-pub_date',).distinct('pub_date',)

    return render(request, 'etherblog/search_results.html', context={'articles': results, 'terms': terms})

我相信搜索引擎也会触发此错误:

File "/home/danjewett/webapps/ether/ether/etherblog/views.py" in search_results
  102.     terms = request.GET['search_terms'].split()

File "/home/danjewett/webapps/ether/etherenv/lib/python3.5/site-packages/django/utils/datastructures.py" in __getitem__
  85.             raise MultiValueDictKeyError(repr(key))

Exception Type: MultiValueDictKeyError at /search_results/
Exception Value: "'search_terms'"
Request information:
USER: AnonymousUser

0 个答案:

没有答案