diff --git a/README.md b/README.md index 01c55a41f735bc721ef250fd84d026241998cd37..67ebcdcee8d29a598db6d9394ce180e4e6fb8a8f 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,7 @@ Různé: | --- | --- | --- | | `MAJAK_ENV` | prod | `prod`/`test`/`dev` prostředí kde Maják běží | | `SENTRY_DSN` | | pokud je zadáno, pády se reportují do Sentry | +| `SEARCH_CONFIG` | english | nastavení jazyka fulltextového vyhledávání, viz níže | Settings pro appky na weby: @@ -144,6 +145,30 @@ Přes CRON je třeba na pozadí spouštět Django `manage.py` commandy: * `publish_scheduled_pages` - publikuje naplánované stránky (každou hodinu) * `update_callendars` - stáhne a aktualizuje kalendáře (několikrát denně) +### Fulltextové vyhledávání v češtině + +Pro fulltextové vyhledávání je třeba do PostgreSQL přidat +[slovníky](https://github.com/f00b4r/postgresql-czech) do adresáře +`/usr/local/share/postgresql/tsearch_data/`. + +V databázi Majáku je třeba nakonfigurovat český fulltext: + +```sql +CREATE TEXT SEARCH DICTIONARY cspell (template=ispell, dictfile=czech, afffile=czech, stopwords=czech); +CREATE TEXT SEARCH CONFIGURATION czech (copy=english); +ALTER TEXT SEARCH CONFIGURATION czech ALTER MAPPING FOR word, asciiword WITH cspell, simple; +``` + +Otestovat funkčnost lze dotazem: + +```sql +SELECT * FROM ts_debug('czech', 'Příliš žluťoučký kůň se napil žluté vody'); +``` + +Dále nastavit environment proměnnou `SEARCH_CONFIG=czech`. A nakonec jednorázově +spustit naplnění indexu pro vyhledávání `python manage.py update_index`. +Aktualizace indexu poté probíhají automaticky při uložení stránek. + ### Přidání nového webu Doména či subdoména se musí nakonfigurovat v: diff --git a/majak/settings/base.py b/majak/settings/base.py index 20090bac97dc13c11bcfbec1cdfa2a13d4fe248f..225ed9852f1f6bbbcd76cf123a48c436a5344e64 100644 --- a/majak/settings/base.py +++ b/majak/settings/base.py @@ -59,6 +59,7 @@ INSTALLED_APPS = [ "wagtail.contrib.modeladmin", "wagtail.contrib.table_block", "wagtail.contrib.routable_page", + "wagtail.contrib.postgres_search", "wagtail.embeds", "wagtail.sites", "wagtail.users", @@ -224,6 +225,13 @@ WAGTAILUSERS_PASSWORD_ENABLED = False WAGTAILUSERS_PASSWORD_REQUIRED = False WAGTAIL_EMAIL_MANAGEMENT_ENABLED = False +WAGTAILSEARCH_BACKENDS = { + "default": { + "BACKEND": "wagtail.contrib.postgres_search.backend", + "SEARCH_CONFIG": env.str("SEARCH_CONFIG", default="english"), + } +} + # Base URL to use when referring to full URLs within the Wagtail admin backend - # e.g. in notification emails. Don't include '/admin' or a trailing slash BASE_URL = env.str("BASE_URL", default="https://majak.pirati.cz")