mong / mongts

The code behind skde.no front page
https://www.skde.no
GNU General Public License v3.0
1 stars 0 forks source link

Søkefunksjon #390

Open arnfinn opened 2 years ago

arnfinn commented 2 years ago

Implementere søkefunksjon: image

Krav

Det skal ikke søkes i atlas som ikke er publisert

I atlas-filene defineres det om atlaset skal vises på forsiden eller ei: https://github.com/mong/mongts/blob/52ef02021fb9a3f2b7bdf470161b1afbb638424a/apps/skde/_posts/helseatlas/atlas/test_atlas.json#L4

Atlas som ikke er publisert (publisert: false) er atlas som er under utvikling, og skal ikke kunne søkes opp av brukere av siden vår.

Ønsker

Dette er egenskaper som ikke er nødvendig å få på plass i første omgang, men kjekt å få på plass på sikt.

Søke kun på undersiden man er på

Når man er på sider under /helseatlas så søker man kun på sider under /helseatlas, og tilsvarende for /helseatlas/en (engelske sider) og /kvalitetsregistre. Når man er på rota så søker man på alle sider.

Kunne søke på create-react-app-delen av siden

/kvalitetsregistre er delvis en create-react-app og dermed ikke statisk bygd, men fylles on-the-fly. Søk på disse sidene kan derfor være litt mer komplisert å få til? Vi har ambisjoner om å bygge mer av sidene på forhånd (hente data i getStaticProps under bygging av sidene, se #566). Det er derfor ikke et krav å få på plass søking på kvalitetsregistre/-delen i første omgang.

arnfinn commented 2 years ago

Next.js bruker Algolia på sine sider.

arnfinn commented 2 years ago

AWS har sin egen Amazon CloudSearch.

arnfinn commented 1 year ago

@JorgenRe1 Fikk du innloggings-info til Algolia på Slack?

JorgenRe1 commented 1 year ago

@arnfinn har indeksert helseatlasene tekst for tekst i hvert kapittel. Da som anbefalt av Algolia så burde man indeksere paragraf for paragraf i lange dokumenter for å få bedre søketreff. Hvert kapittel har en unik nøkkel så man skal bare få treff på 1 innhold per kapittel, men jeg ser at noen innhold er veldig lang. Eg barnehelseatlas.

Tenker det kan være lurt å splitte opp markdown tekstene i paragrafer og så registrere det som ren tekst framfor å ha markdown i søkeresultat. Så prøv gjerne å testsøk på epilepsi på algolia indeks sida https://www.algolia.com/apps/288TUL5IX8/explorer/browse/prod_HELSEATLAS?searchMode=search

image

arnfinn commented 1 year ago

Glimrende! I noen av de eldre atlasene er hvert kapittel litt langt. Dette er egentlig bare latskap fra min side, og det er enkelt å splitte opp (bare en kjedelig gjørejobb). Jeg kan gjøre det hvis vi finner ut at det ikke er bra nok slik det er nå.

Er det mulig å la innhold være oppslittingsenheten? I et av de nyere atlas, kronikere, er hvert kapittel forholdsvis langt, men hvert innhold mer håndterbart.

JorgenRe1 commented 1 year ago

Det at et kapittel er langt gjør ikke noe. Det er spesifikt hver innhold som blir en record. Så jeg tror det er innhold for innhold allerede. Viss du ser her: https://github.com/mong/mongts/blob/6a9f7504926ebc7d98f6066522071f7f004efad5/packages/indexer/src/methods/index-helseatlas.ts#L100 så mapper jeg ut hvert chapter sine innhold til en record som den sender til algolia.

JorgenRe1 commented 1 year ago

@arnfinn tar dere implementering av søkesiden i nettsiden, eller ønsker du at jeg gjør det? Jeg er mest teknisk, så du må isåfall hjelpe meg med hvordan du ønsker at det skal se ut.

Vil si implementasjonen av indekseringen er komplett. Mangler nok bare å kjøres automatisk. Så at det er draft er mest til vi evt har testet ferdig, men du kan sikkert merge det inn for å slippe evt merge konflikter i pakke lock filen?

arnfinn commented 1 year ago

@JorgenRe1 Du må gjerne jobbe videre med denne.

Ser nå at det allerede ligger en søkeknapp inne i repo under /apps/skde/src/components/Buttons/SearchButton.tsx:) Vi kan sikkert bruke den enn så lenge. Det skal se mest mulig likt ut som på helse-nord og andre helseforetak sine sider:

image

Med pop-up som her:

image

Det ligger også popup-kode i repo som kan brukes. Noe ala dette?:

import { PopUp } from "../popup";
import { SearchButton } from "../Buttons/SearchButton";

export const SearchBar = () => {
  return (
    <PopUp btnComponent={() => <SearchButton />}>
    ... algolia ...
    </PopUp>
  );
};

Automatisk kjøring av indeksering kan vi vel gjøre gjennom github actions? Må jeg legge inn noen secrets for å kunne gjøre dette (tokens etc.), eller har du rettigheter nok til å gjøre det?

arnfinn commented 1 year ago

Da har jeg lagt inn PR #874