Friday, October 1, 2010

Re: Full Text Search

Hello!

I use PostgreSQL, and this is how I accomplished a full text search:

def search(request):
# how to set up postgresql for full text searching
#alter table quote_quote add column body_tsv tsvector;
#CREATE TRIGGER quote_quote_tsvectorupdate BEFORE INSERT OR UPDATE
ON quote_quote FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(quote_tsv, 'pg_catalog.english', quote);
#CREATE INDEX quote_quote_tsv ON quote_quote USING gin(quote_tsv);
#UPDATE quote_quote SET quote_tsv=to_tsvector(quote);

q = request.GET['q']

quotes = Quote.objects.extra(
select={
'snippet': "ts_headline(quote, plainto_tsquery(%s))",
'rank': "ts_rank_cd(quote_tsv, plainto_tsquery(%s), 32)",
},
where=["quote_tsv @@ plainto_tsquery(%s)"],
params=[q],
select_params=[q, q],
order_by=('-rank',)
)

paginator = Paginator(quotes, 50)

try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1

try:
quotes = paginator.page(page)
except (EmptyPage, InvalidPage):
quotes = paginator.page(paginator.num_pages)

my_data_dictionary = {
'quotes': quotes,
'q' : q,
}

return render_to_response('results.html',
my_data_dictionary,
context_instance=RequestContext(request))

urlpatterns = patterns('',
url(r'^search/$', search),
)

On Fri, Oct 1, 2010 at 7:26 PM, Andrej <amasiar@gmail.com> wrote:
> Check this out:
>
> http://www.julienphalip.com/blog/2008/08/16/adding-search-django-site-snap/
>
> On Oct 1, 6:52 am, Alessandro Ronchi <alessandro.ron...@soasi.com>
> wrote:
>> On Fri, Oct 1, 2010 at 3:35 AM, Steve Holden <holden...@gmail.com> wrote:
>> > On 9/30/2010 8:26 PM, Nick Arnett wrote:
>> > > Brain is mush, though.
>>
>> Thank you. I'm waiting with hope :)
>>
>> --
>> Alessandro Ronchihttp://www.soasi.com
>
> --
> You received this message because you are subscribed to the Google Groups "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
>
>

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment