Python django的类似stackoverflow的动态搜索

Python django的类似stackoverflow的动态搜索,python,django,search,django-queryset,Python,Django,Search,Django Queryset,有人知道什么插件(使用Django)最适合处理像StackOverflow这样的动态搜索吗?一些东西: 我只考虑复杂的查询 query = request.GET.get('q') text_query = # what regex here? tags_query = # is_duplicate = re.search(r'(?P<duplicate>\w+)', query) Question.objects.filter(...) Answer.objects.fi

有人知道什么插件(使用Django)最适合处理像StackOverflow这样的动态搜索吗?一些东西:


我只考虑复杂的查询

query = request.GET.get('q')

text_query = # what regex here?
tags_query = # 
is_duplicate = re.search(r'(?P<duplicate>\w+)', query)

Question.objects.filter(...)
Answer.objects.filter(...)
query=request.GET.GET('q'))
text_query=#这里是什么正则表达式?
标签_查询=#
is_duplicate=重新搜索(r'(?P\w+),查询)
问题.对象.过滤器(…)
Answer.objects.filter(…)
然后可以分别处理标记和冒号以进行查询

如果要在问题数据库中搜索搜索查询中的所有术语,可以执行以下操作。它将查找包含所有搜索词的所有文本

search = search.split()

db_query = Q(text__icontains=search[0])
for term in search[1:]:
    db_query = db_query | Q(text__icontains=term)

Question.objects.filter(db_query)
然后可以分别处理标记和冒号以进行查询

如果要在问题数据库中搜索搜索查询中的所有术语,可以执行以下操作。它将查找包含所有搜索词的所有文本

search = search.split()

db_query = Q(text__icontains=search[0])
for term in search[1:]:
    db_query = db_query | Q(text__icontains=term)

Question.objects.filter(db_query)

没有插件是真正必要的。它可以相对容易地用正则表达式处理。你是在问如何将上述查询作为一个例子来处理吗?@Jonathan ah是的。。。你能举例说明如何做到这一点吗?如何查找
text\u query='how'
和其他..不需要插件。它可以相对容易地用正则表达式处理。你是在问如何将上述查询作为一个例子来处理吗?@Jonathan ah是的。。。你能举例说明如何做到这一点吗?如何查找
text\u query='how'
和其他..两个或三个查询如何?例如:
query=“left side[django]或[python]或[mu]duplicate:yes是:response right side”
,所以这里我们得到了
“left side”
“right side”
。。如果我按照你的答案做,我得到了
“左侧-右侧”
(带空格)。我怎样才能一个接一个地识别“左侧-右侧”。@sanca右侧有什么语义意义吗?如果您在stackoverflow中进行查询,它就不在乎了。它将搜索包含
左侧和右侧的条目
@SancaKembang我更新了一点答案,以了解查询在数据库方面的外观。嗯,我明白了。。我认为如果像
title\uu icontains='left side right side'
这样的全文,它应该是
title\uu icontains='left side'
title\uu icontains='right side'
。。与此结果类似,
search.split()
的输出是
['how'、'to'、'right'、'side']
两个或三个查询如何?例如:
query=“left side[django]或[python]或[mu]duplicate:yes是:response right side”
,所以这里我们得到了
“left side”
“right side”
。。如果我按照你的答案做,我得到了
“左侧-右侧”
(带空格)。我怎样才能一个接一个地识别“左侧-右侧”。@sanca右侧有什么语义意义吗?如果您在stackoverflow中进行查询,它就不在乎了。它将搜索包含
左侧和右侧的条目
@SancaKembang我更新了一点答案,以了解查询在数据库方面的外观。嗯,我明白了。。我认为如果像
title\uu icontains='left side right side'
这样的全文,它应该是
title\uu icontains='left side'
title\uu icontains='right side'
。。与此类似,
search.split()
的输出是
['how','to','right','side']
search = search.split()

db_query = Q(text__icontains=search[0])
for term in search[1:]:
    db_query = db_query | Q(text__icontains=term)

Question.objects.filter(db_query)