Volltextsuche

Vor einigen Jahren hatte ich die Suchfunktion für meine Website aus Kapazitätsgründen auf Seitentitel und Autorinnen beschränken müssen, aber die Rahmenbedingungen haben sich seitdem erheblich geändert. Einerseits lässt Moore's Law Server sehr viel entspannter mit großen Datenbanken umgehen (so dass ich zwischenzeitlich eine komputational teure tag cloud implementieren konnte, wenn auch mit lastdämpfendem Caching), andererseits müssen Besucherinnen meiner Website seit mehr als einem Jahr ganz ohne Suchfunktion auskommen. Und weil ich selbst die Vielzahl der Einzelseiten nicht ausschließlich per psql durchforsten möchte, erweitere ich meine Django-Anwendung wie folgt:

# forms.py class SearchForm(forms.Form): page_title = forms.CharField(max_length=100, label = 'Titel', required=False) page_content = forms.CharField(max_length=100, label = 'Inhalt', required=False) page_author = forms.CharField(max_length=100, label = 'Autor*in', required=False) # views.py results = Page.objects.filter(title__icontains=form.cleaned_data['page_title'], content__icontains=form.cleaned_data['page_content'], author__last_name__icontains=form.cleaned_data['page_author']).order_by('title')

Bei einem DB-Volumen von ~ 120MB zuckt die CPU-Kurve des Datenbankservers nicht einmal.