Jobindsats – Detaljeret design – Søgning
Indholdsfortegnelse
- 1 Indholdsfortegnelse
- 2 Formål
- 3 Målgruppe
- 4 Søgefunktionalitet
- 4.1 Brugergrænseflade
- 4.1.1 Topbar
- 4.1.2 Søgeside
- 4.1.3 Søgeresultat
- 4.1.4 URL
- 4.2 Søgbare sider
- 4.3 Søgbare felter
- 4.4 Boosting
- 4.5 Synonymer
- 4.6 Sortering
- 4.6.1 Tomt søgefelt
- 4.6.2 Udfyldt søgefelt
- 4.7 Teknisk implementering
- 4.7.1 Manipulation af søgestreng
- 4.7.2 Søgeside
- 4.1 Brugergrænseflade
Formål
Formålet med dette dokument er at beskrive søgefunktionaliteten, som er implementeret på Jobindsats.dk. Dokumentet skal give et fyldestgørende overblik over, hvilken logik der er grundlaget for søgefunktionaliteten, og hvordan resultater fremsøges og præsenteres på baggrund af brugerinputs.
Målgruppe
Dokumentet er tiltænkt udviklere, som skal vedligeholde søgefunktionaliteten, og foretage ændringer i kildekoden. Informationen tilgængelig i dokumentet er også relevant for andre tekniske stakeholders, der ønsker indgående kendskab til søgefunktionalitetens implementering.
Søgefunktionalitet
Brugergrænseflade
Topbar
Søgefunktionaliteten kan anvendes fra alle sider på Jobindsats, idet et simpelt søgefelt optræder i topbaren.
Søgeside
Selve søgesiden indeholder yderligere funktioner sammenlignet med søgefeltet i topbaren. Den kan tilgås ved at bruge søgeknappen til højre for søgefeltet i topbaren. Indholdet i søgefeltet i topbaren sendes med til søgesiden, hvor det fremgår i søgefeltet herpå. Hvis søgefeltet er tomt, fremsøges alle søgbare sider.
Som standard søges der på alle kategorier, og der vises 10 resultater per side. Vælges en anden værdi i ét af dropdown felterne, opdateres siden, og resultatet justeres tilsvarende.
Antallet af resultater kan som udgangspunkt sættes til 10, 25 eller 50 resultater per side.
De valgbare sidekategorier stemmer direkte overens med sektionerne i topbaren. Hvilke undersider, der kan fremsøges, er uddybet i afsnit Jobindsats – Detaljeret design – Søgning | [inlineExtension][inlineExtension][inlineExtension]Søgbare sider.
Søgeresultat
Hvert søgeresultat vises på to linjer på følgende format:
For nyheder vises publiceringsdatoen i stedet for ændringsdatoen.
URL
Søgestreng, valg af kategori og valg af antal resultater opdateres i sidens URL. Det er derfor muligt at gemme en søgning ved at gemme den tilsvarende URL, og ligeledes dele en specifik søgning med andre personer gennem samme URL.
Søgbare sider
Det er muligt at fremsøge:
Elementsider
Temasider
Sektionssider
Uddybende forklaring af hvad disse sider dækker over kan findes i Jobindsats – Brugergrænseflade-design.
Søgbare felter
Hvis følgende felter indeholder ét eller flere af søgeordene i søgestrengen, vil siden de fremgår på optræde i søgeresultatet:
Sidenavn
Overskrift
Manchettekst
Brødtekst
Tags
Hvert felt har forskellig vægtning, nærmere beskrevet i afsnit Boosting.
Boosting
De søgbare felter er vægtet (boosted) forskelligt ud fra hårdt satte værdier i kildekoden. Deres vægtning er afgørende for, rækkefølgen hvori de fremsøgte resultater sorteres. Dvs. at et match på et højt vægtet felt vil bringe resultatet relativt længere op i søgeresultatet, sammenlignet med et match på et lavt vægtet felt.
Vægtningen (boosting) er indstillet således:
Sidenavn – 10x
Overskrift – 10x
Manchettekst – 3x
Brødtekst – 1x
Tags – 50x
Ved at vægte tags relativt højt, er det muligt at bruge tags til at fremhæve særligt relevante sider i søgeresultatet.
Synonymer
Der anvendes synonymer på udvalgte specialkarakterer, da den bagvedliggende søgefunktionalitet ikke understøtter nordiske bogstaver og andre specialtegn
Tegn | Synonym |
Æ | Ae |
Ø | O |
Å | A |
æ | ae |
ø | o |
å | a |
- | [Mellemrum] |
( | [Mellemrum] |
) | [Mellemrum] |
? | [Mellemrum] |
. | [Mellemrum] |
Sortering
Sorteringen af søgeresultaterne afhænger af, om søgefeltet er tomt.
Tomt søgefelt
Ved et tomt søgefelt foretages sorteringen udelukkende på baggrund af ændringsdato og -tidspunkt for de fremsøgte sider, som vil være sorteret fra nyeste til ældste. Dette gælder også nyheder, selvom den dato, der vises ud fra en nyhed er publiceringsdatoen. Der kan derfor være uoverensstemmelse mellem den viste dato og rækkefølgen for nyheder.
Ændring af dropdowns (kategori og sideantal) vil ikke påvirke sorteringen, så længe søgefeltet er tomt.
Udfyldt søgefelt
Når der er indhold i søgefeltet, vil sorteringen ske på baggrund af den score, der tildeles hver enkelt side, hvor et match findes. Sorteringen er i dette tilfælde således uafhængig af ændringsdatoen.
Scoren afhænger af, hvor mange gange hvert enkelt søgeord optræder i et søgbart felt på siden. Scoren justeres relativt ud fra den pålagte vægtning (boosting), nærmere beskrevet i afsnit Boosting.
Teknisk implementering
Søgningen er implementeret med Examine, og der er taget inspiration i følgende ressourcer, hvor yderligere indgående dokumentation er tilgængelig:
https://our.umbraco.com/documentation/reference/searching/examine/examine-manager
https://our.umbraco.com/documentation/reference/querying/IPublishedContentQuery/
https://shazwazza.com/post/searching-with-ipublishedcontentquery-in-umbraco/
Examine er inbygget I Umbraco, og baseret på Lucene indeksering, som sørger for at lave et søgbart eksternt index over alle sider. Det er også Examine der tildeler hvert enkelt resultat den score, som bestemmer sorteringsrækkefølgen.
Manipulation af søgestreng
Brugerens input i søgefeltet gemmes som en streng, hvor alle tegn angivet i afsnittet 3.5 Synonymer erstattes med deres synonym. Herefter splittes strengen på mellemrum til et array, der bruges til at matche imod indholdet på alle søgbare sider.
Søgeside
Søgesiden er opbygget af cshtml, hvor hovedindholdet består af et lit element (ji-pagination-element.ts).
De anvendte dropdowns er custom komponenter (maaling-dropdown-element), der anvendes flere steder i løsningen, bl.a. på databank element siderne i mobilvisning. Ved ændring af valg i dropdowns, kommunikerer lit-elementet med cshtml elementet ved at opdatere URL’en tilsvarende den valgte værdi. Dette medfører at siden genindlæses, når valget i dropdown elementernes ændres.