有没有人知道什么插件(使用Django)最好来处理像StackOverflow这样的动态搜索?某事like this:
<input type="text" value="how to [django] or [python] duplicate:yes is:answer" style="width: 50%">
我只考虑复杂的查询。
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(...)
答案 0 :(得分:0)
query = "how to [django] or [python] or [mu] duplicate:yes is:answer"
tags = re.search(r'\[(\w+)\](( or \[(\w+)\])+)?', query)
colons = re.findall(r'\w+:\w+', query)
search = query.replace(tags.group(), '')
for colon in colons:
search = search.replace(colon, '')
print(search) # how to
然后您可以单独处理标记和冒号以进行查询。
如果您想在问题数据库中搜索搜索查询中的所有条款,您可以执行以下操作。它将找到包含所有搜索词的所有文本。
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)