Søkefunksjon
Søk rutes til django-appen som ligger i src/search
.
Vi har lagt til Wagtails PostgreSQL-søkebackend for å få bedre søkeresultat. Wagtails generelle database-søkebackend, som brukes som default, lar oss kun søke i sidens tittel.
Installasjon og konfigurasjon
Søkebackenden er lagt til i INSTALLED_APPS
i settings.py
:
INSTALLED_APPS = [
...
'wagtail.contrib.postgres_search',
...
]
og satt til å være default søkemotor, samt bruke norske regler for søk:
WAGTAILSEARCH_BACKENDS = {
'default': {
'BACKEND': 'wagtail.contrib.postgres_search.backend',
'SEARCH_CONFIG': 'norwegian',
},
}
Norske søkeregler gjør at man kan søke på «figuren» og få treff på sider som kun inneholder «figur» og omvendt.
Hvilke språk som støttes i PostgreSQL vises ved å kjøre \dF
i SQL-skallet:
$ psql -c "\dF"
List of text search configurations
Schema | Name | Description
------------+------------+---------------------------------------
pg_catalog | danish | configuration for danish language
pg_catalog | dutch | configuration for dutch language
pg_catalog | english | configuration for english language
pg_catalog | finnish | configuration for finnish language
pg_catalog | french | configuration for french language
pg_catalog | german | configuration for german language
pg_catalog | hungarian | configuration for hungarian language
pg_catalog | italian | configuration for italian language
pg_catalog | norwegian | configuration for norwegian language
pg_catalog | portuguese | configuration for portuguese language
pg_catalog | romanian | configuration for romanian language
pg_catalog | russian | configuration for russian language
pg_catalog | simple | simple configuration
pg_catalog | spanish | configuration for spanish language
pg_catalog | swedish | configuration for swedish language
pg_catalog | turkish | configuration for turkish language
(16 rows)
Se Wagtail-dokumentasjonen for mer informasjon.
Utseende
Templaten for søkeresultatsiden er endret til å arve fra base_with_nav.html
slik at den har samme utseende som en vanlig artikkel (navigasjonsmeny etc.).
Sammen med søkeresultatet viser vi også antall søketreff.
Andre tilpasninger
Fordi vi vil ha muligheten til å hoste flere nettsteder i samme Wagtail-installasjon,
er søkealgoritmen endret til å kun gi treff i artikler som hører til samme nettsted
som man gjør søket fra. Detaljer i changeset c25731b21194
.
Wagtail krasjer når søkestrengen består av kun et eller flere mellomrom.
For å omgå denne bugen fjerner vi mellomrom fra endene av søkestrengen før søk.
Se changeset 8fe33ef25f49
.