Askfor & David,
On the Solr/Whoosh backends, ``narrow`` is used to create an subset
of all documents to search within. You can think of this like a
subselect in a SQL query. The reason ``narrow`` exists instead of just
using ``filter`` is that queries used to evaluate differently if you
shoved the narrowing bit into the query with everything else.
sqs = SearchQuerySet().narrow(sites__in=[1,3]).filter(content='hello').filter_or(content='world')
# Docs narrowed to ones with site 1 or 3, then searching "hello OR world"
# ...vs...
sqs = SearchQuerySet().filter(sites__in=[1,3]).filter(content='hello').filter_or(content='world')
# Used to be searching "sites:[1,3] AND hello OR world"
This may be different now, due to SQ and the use of parenthesis in
the query, but ``narrow`` feels safer to me when I need it, knowing
I'll be limited to the correct subset of documents and that I'll have
a simpler search query within those documents.
Daniel