【发布时间】:2010-03-17 10:09:44
【问题描述】:
我想在 django 博客应用程序中实现搜索功能。现状是我有一个用户提供的字符串列表,并且查询集被每个字符串缩小,只包括那些与字符串匹配的对象。
见:
if request.method == "POST":
form = SearchForm(request.POST)
if form.is_valid():
posts = Post.objects.all()
for string in form.cleaned_data['query'].split():
posts = posts.filter(
Q(title__icontains=string) |
Q(text__icontains=string) |
Q(tags__name__exact=string)
)
return archive_index(request, queryset=posts, date_field='date')
现在,如果我不想将通过逻辑 AND 搜索但使用逻辑 OR 搜索的每个单词连接起来怎么办?我该怎么做?有没有办法使用 Django 自己的 Queryset 方法来做到这一点,还是必须退回到原始 SQL 查询?
一般来说,像这样进行全文搜索是否是一个合适的解决方案,或者您会推荐使用像 Solr、Whoosh 或 Xapian 这样的搜索引擎。它们有什么好处?
【问题讨论】:
标签: python django django-queryset full-text-search