-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Backend for å administrere og populere Opensearch-index som brukes i søk på nav.no.
Eksponerer endepunkter for å indeksere innhold, hente ut alt innholdet for et team og hente ut enkeltinnhold for et team.
Merk at det i praksis er kun ett team (vårt eget) som indekserer innhold per i dag, men vi har lagt opp til at andre teams potensielt skal kunne indeksere innholdet sitt til vår søkeindeks.
Mapping til indeksen defineres av Content-klassen i et delt bibliotek. Ved deploy av appen opprettes indeksen dersom den ikke allerede eksisterer.
- id: Iden til innholdet. I vårt tilfelle er dette samme id som i CMSet vårt. Id som sendes inn til api prefixes med teamnavn slik at forskjellige teams skal kunne bruke samme indeks uten at det blir id-kollisjoner.
- teamOwnedBy: Team som eier innholdet.
- href: Url til innholdet.
- title: Tittel til innholdet.
- ingress: Ingress til innholdet. HTML-tags og XP-macros filtreres ut.
- text: Selve innholdsteksten. HTML-tags og XP-macros filtreres ut.
- allText: Tittel, ingress og innholdstekst konkatenert. Brukes i søket for å sjekke om innhold inneholder søketermene spredt utover de ulike tekstfeltene.
- type: Innholdstype (f.eks. situasjonsside, aktuelt, skjema osv.)
- createdAt: Timestamp for når innhold ble opprettet.
- lastUpdated: Timestamp for når innhold sist ble oppdatert.
-
sortByDate: Timestamp som skal brukes til sortering i søket. For nyheter er det
createdAt
, ellers er detlastUpdated
. - audience: Mågruppe for innholdet.
- language: Innholdets språk/målform.
- fylke: Brukes dersom innholdet er lokalt for et fylke.
- metatags: Brukes for å avgjøre hvilken fasett søketreffet skal sorteres i.
- languageRefs: En liste av andre språk innholdet finnes på.
Hvert av tekstfeltene har tre subfelter - en, no og other. Dersom innholdet er på engelsk, populeres en-feltet. Dersom det er på norsk, populeres no. Ellers populeres other. I praksis er kun ett av disse feltene satt. Dette gjøres så man kan bruke forskjellige analyzersfor forskjellige språk, men likevel søke på tvers av ulike språk vha et wildcard-query.
Alt av analysis-config ligger i index-settings.json. Disse er i hovedsak tilpassede versjoner av innebygde analyzers. Alle fjerner soft hyphens og zero width space. Her er følgende analyzers konfigurert:
- custom_norwegian_index
- Brukes ved indeksering av norske tekstfelter
- Basert på innebygd norwegian analyzer, men med custom synonymer
- custom_norwegian_ngrams
- Brukes ved indeksering av norske titler og ingresser (i et eget inner field)
- Basert på innebygd norwegian analyzer, men med en ngram multiplexer
- custom_norwegian_search
- Brukes ved søk i norske tekstfelter
- Basert på innebygd norwegian analyzer
- custom_english
- Brukes ved indeksering av, og søk i, engelske tekstfelter
- Basert på innebygd english analyzer
- custom_standard
- Brukes i alle tekstfelter for indeksering og søk i et eget inner field som brukes til eksakte frasesøk
- Basert på innebygd standard analyzer
Merk at synonym-filteret ligger sist i filter-pipelinen. Dette betyr at synonymer som konfigureres må være på samme form som de ville vært om de var ferdig analysert. For eksempel: "betvil, bestrid"
i stedet for "betvile, bestride"
. På denne måten blir "betvile", "betviler", "betvilende" synonymt med "bestride", "bestrider", "bestridende" osv. uavhengig av ordendelser. Man kan brukes dev tools console for å finne riktig analysert versjon av et ord.