Det er utviklet en dokumenttype hvor du kan spesifisere et søk i en indeks, samt velge hvordan du ønsker å presentere søkeresultatene:
<search>og hvordan du ønsker å presentere resultatene dine (med HTML-syntaks)
<index>course</index>
<query type="internal">
URI:/studier/emner/* AND spraak:engelsk and emnekode:INF*
</query>
<sort>studiepoeng:ascending</sort>
<limit>50</limit>
...
...I hvert søke-element er det mulig å bruke en søkestreng definert i et annet dokument av samme type (eksternt søk) eller å kombinere et eksternt søk med et søk spesifisert i dette dokumentet. Dette er nyttig i mange sammenhenger der søket du ønsker å gjøre er en forfining av et søk du har definert i et annet dokument.
<display type="internal">
<pre-results><ul></pre-results>
<result>
<li>
<a href="{@uri}">{$emnekode} - {$emnenavn}</a> ({$studiepoeng} credits)
</li>
</result>
<post-results></ul></post-results>
</display>
...
</search>
Dette er uaktuelt siden vi har gått for kun en indeks.
Luceneindeksene er i dag tilgjengelige fra XSL, men krever at hver indeks må legges til i inngangsvei-dokumentet etterhvert som de opprettes. Dette er ikke ønskelig. Trenger derfor følgende:
På view trengs et query-objekt istedenfor et objekt pr. indeks. Dette objektet trenger en funksjon for å avgjøre hvilken indeks som skal brukes. F.eks. Query.executeQuery(index, searchQuery, sort, limit)
I edit trengs en parameter som innholder en space/komma-separert liste over tilgjengelige indekser for denne hosten. Denne listen skal brukes til å kontrollere input i inngangsvei-dokumenttypen, ved f.eks lage en nedtrekksmeny
I edit trengs også et objekt for å lage url til 'test'-xml resultat på bakgrunn av hva som er spesifisert som index, searchquery, sort og limit. Dette for å unngå hardkoding av parametere i denne url'en i XSL. Urlen skal brukes til å lage en lenke til en side som viser xml-innholdet fra visning i edit
Emner sortert etter tema (tema = enhet i 1. omgang) (46 stk.)
type=emnebeskrivelse-fullstendig AND (uri={currentUri}/* OR
emne:kode=DIG* OR emne:kode=MED-INF* OR emne:kode=TOOL*)
(name=index.xml OR name=index-eng.xml)?
Emner som tilbys på engelsk (sortert etter tema) (46 stk.)
Som over samt:(emne:undervisningsspraak=engelsk OR
emne:undervisningsspraak=engelsk-ved-behov) AND emne:spraak=engelsk
Oversikt over temabaserte emneinngangsveier (10 stk.)
Uavklart...
Emner sortert alfabetisk etter emnekode (9 stk.)emnekode:A* OR emnekode:B* OR emnekode:C*
Emnegrupper sortert etter omfang (1 stk.)
Ikke spesifisert ennå. Enkel.Studieprogrammer sortert alfabetisk (1 stk.)
For komplekst for portal.xml. Trenger egen dokumenttype. Trenger å flette to søk for å liste opp studieretninger under hvert studieprogram.Det samme som "Emner sortert etter tema" samt
emne:undervisningssemester=hver-hoest OR
emne:undervisningssemester=over-to-semestre-oppstart-hoest OR
emne:undervisningssemester=vaar-og-hoest OR
emne:undervisningssemester=over-to-semestre-oppstart-vaar-og-hoest OR
emne:undervisningssemestre.bestemte=høst2006
Spesifikasjon av søk i denne delen av dokumentet er gjort med Lucene-syntaks og pseudo-kode.
/studier/emner/matnat/ifi/index.xmlHver enkelt inngangsvei vil i utgangspunktet være bygd opp av et søk med emnekode-prefikser f.eks.:
/studier/emner/matnat/kjemi/index.xml
/studier/emner/matnat/fysikk/index.xml
...
emnekode:DIG* OR emnekode:INF* OR emnekode:MED-INF* OR emnekode:TOOL*Det hadde vært veldig nyttig å slippe å spesifisere emnekodene til emnene som ligger plassert i samme mappe som inngangsveien eller lenger ned i strukturen, slik at man kun må spesifisere de emnene som ligger i andre mapper:
URI:./* OR emnekode:prefiks-til-emne-som-ligger-i-en-annen-mappeFor informatikk sin del ville det ført til at man ikke trengte å liste opp andre prefiks, siden alle emnene de ønsker å vise frem, ligger i mappen sammen med inngangsveien.
For å få de temabaserte emneinngangsveiene til å se mest mulig like ut, er det fornuftig å la alle inngangsveiene bruke et eksternt søkedokument for spesifisering av utseende for resultatfremvisning. Det vil også lette vedlikehold i forbindelse med evt. endringer i fremvisningen av søkeresultater. Det eksterne søkedokumentet bør også sette opp et utgangssøkequery for alle 46 inngangsveier slik at man enkelt kan innføre et generelt søkekrav som vil gjelde for alle inngangsveiene.
Det eksterne søkedokument som definerer
utgangssøk/visning kan plasseres her:
/studier/emner/inngangsveier/temabasert.xml
Og det bør ha følgende søk:
resourceType=emnebeskrivelse-fullstendig AND URI:/studier/emner/*/*/* AND
status:gjeldende-emne AND (resourcename:index.xml OR
resourcename:index-eng.xml) AND URI:./*
Det er planer om å lage en egen ressurstype for fullstendige emnebeskrivelser som vil innebære at søk mot denne ressurstypen implisitt vil håndheve andre relevante krav til fullstendige emnebeskrivelser, f.eks.:
schema-id=http://www.uio.no/xsd/studier/emne/* AND emnekode.not-empty AND
emnenavn.not-emtpy AND studiepoeng>0
Et annet ønske er å fjerne dagens problem med dobbel opplisting av emner som finnes på både norsk og engelsk. Det finnes mange mapper i dag som kun inneholder index-eng.xml. Logikken rundt dette er såpass vanskelig, at vi er litt usikre på om og hvordan vi skal løse dette. Typisk ønsker man seg på de norske emneoversiktene å vise frem den norske versjonen av emnebeskrivelser der de eksisterer, men for emner der det kun finnes en engelsk emnebeskrivelse ønsker man å vise frem denne også i de norske inngangsveiene.
En løsning i 1. omgang vil være å rename alle "index-eng.xml"-filer (i mapper der ikke finnes en index.xml) til "index.xml". Da kan vi fjerne index-eng.xml og index-eng.html fra listen over index-filer.
Kommer antaglig ikke til å gjøre dette i 1. omgang. For å kunne tilby dette, må vi i større grad kunne basere oss på plassering av emner og ikke emneprefikser. Første punkt blir da å skille emner som ligger plassert i en gitt temamappe (typisk instituttmappe) fra de emnene som vises fram basert på emnekode-prefiks (typisk relevante emner i andre kategorier). Problem med fakulteter som tilbyr en rekke emner på fakultetsnivå, f.eks. Jus. Jus har emner som tematisk burde vært lagt i et eksisterende undertema f.eks menneskerettigheter, men er administrert av fakultetet og ligger derfor på fakultetsnivå.
(undervisningsspraak:engelsk OR
undervisningsspraak:engelsk-ved-behov) AND spraak:engelsk
Ønsker man egen formattering av resultatene i de
engelske inngangsveiene må det legges i alle inngangsveiene
siden vi bruker et søkedokument (index.xml) som reelt er i
bruk. Men hvis vi klarer å unngå det, vil vi kunne
bruke fremvisningen til det norske søket (index.xml)
<h1>Emner ved UiO (sortert etter tema)</h1>
Jus
- Rettsinformatikk
- Kriminologi
- ...
Mens på uio.no/studier/emner/jus/kriminologi/
<h1>Emner innen Kriminologi</h1>
- KRIM1001 - Innføring i kriminologi
- ...
9 dokumenter lokalisert her:
/studier/emner/alfabetisk/index.xml (a-c)
/studier/emner/alfabetisk/df.xml
/studier/emner/alfabetisk/gi.xml
...
Hvert dokument må inneholde en søkestreng av typen (med sortering på emnekode):
emnekode:A* OR emnekode:B* OR emnekode:C*
Det finnes også en alfabetisk oversikt over emner
på engelsk (kun ett dokument siden det ikke er så
mange emner som undervises på engelsk). Den blir i veldig
liten grad brukt, så den kan vi antaglig slippe å
lage siden det er den tema/enhetsvise inngangsveien som er viktig for
de som jobber med engelske emner.
/studier/emner/matnat/ifi/index.xmlkan plasseres her
/studier/emner/matnat/ifi/h06.xmlmed følgende søkekriterier (utover det som er definert i index.xml):
undervisningssemester:hver-hoest OR
undervisningssemester:over-to-semestre-oppstart-hoest OR
undervisningssemester:vaar-og-hoest OR
undervisningssemester:over-to-semestre-oppstart-vaar-og-hoest OR
bestemteUndervisningssemestre:høst2006
Disse inngangsveiene må man lage hvert semester (46. stk). Eller man kan lage de på forhånd for en del semestre. Et av problemene med denne løsningen er at oversiktene ikke vil være korrekte bakover i tid. Fremover i tid går bra. Vi har rett og slett ikke datagrunnlag for å si noe om hvilke emner som ble undervist i tidligere semestre, kun fremover i tid. Ett emne kan f.eks. endre undervisningssemester fra hver vår til hver høst.
Ideelt sett vil vi gjerne slippe å lage 46 nye inngangsveier hvert semester. Kanskje må vi lage for engelske emner også, da blir tallet 92. Innenfor dagens løsning (portal.xml) har vi (Even og Tomm) diskutert muligheten for å parameterisere dette søket fra den tematiske inngangsveien. Men vi har ikke kikket nærmere på dette enda.
Datakvaliteten på innholdselementet "undervisningssemester" er så dårlig at det forutsetter en gjennomgang av alle dokumenter. I tillegg må visningslogikken rundt fremvisning av innholdet i fritekst i kombinasjon med attributtverdi endres slik at fritekst kun blir spyttet ut når verdien er satt til "annet". Antagelig bør "annet" endres til "uvisst". Det bør gjøres tydelig i redigeringsgrensesnittet at fritekst kun kommer ut hvis du har valgt "annet".
Konseptet varighet bør også fjernes fra attributtverdiene (over-to-semestre- osv). Uheldig sammenblanding av konsepter (varighet og oppstart av undervisning).
Behov for å kunne søke etter dokumenter
med innholdselementer i forhold til dagens dato. Antagelig best om
konseptet dagens dato blir håndtert av søke-apiet.
F.eks.
startdato:en-syntaks-for-dagens-dato
Det er også behov for å kunne evaluere en
dato utifra om den er før eller etter dagens dato.
Det som avgjør om et dokument skal dukke opp
på en generell "hva skjer"-oversikt er bl.a. at dokumentet
har knyttet en "evenementsdato" til seg. I dag ligger dette som
XML-innhold i noen av dokumenttypene som er laget i forbindelse med
tavle, men spesifisert i en egen komponent.
For mange oversikter vil det være naturlig å knytte krav til plasseringen av dokumentene som skal vises frem i oversiktene. F.eks. vil en oversikt over disputaser på matnat være plassert her:
http://www.matnat.uio.no/disputaser/index.xml
og innholde følgende søkebetingelser:
URI:./* AND resourceType:disputas AND
startdato:større-enn-dagens-dato
Det vil sørge for at kun disputaser som ligger under matnat.uio.no/disputaser/ vil dukke opp i den offisielle disputas oversikten til matnat. Samtidig vil folk kunne opprette beskrivelser av disputaser over alt ellers på matnat.uio.no uten at det påvirker den offisielle oversikten. Dokumenttypen for disputas bør antagelig flyttes ut fra "tavle2"-mappa i vortex-webdocuments til "uio"-mappa.
Kan ikke se at det er hensiktsmessig å kombinere oppheng/nedtaksdato med arrangementdato. På dokumenter som har arrangementsdato, vil det gi seg selv at arrangementet forsvinner fra oversikten over hva som skjer i det datoen er passert, og da i steden er tilgjengelig fra en oversikt over gamle arrangementer. F.eks for matnat sin del:
http://www.matnat.uio.no/disputaser/tidligere-disputaser.xml
hvor søket er spesifisert slik:
URI:./* AND resourceType:disputas AND
startdato:mindre-enn-dagens-dato
I de tilfeller det finnes årstallsmapper bør de ha satt opp inngangsveier som lister opp arrangementene som ligger i mappen:
http://www.matnat.uio.no/disputaser/2005/index.xml
med søket:
URI:./* AND resourceType:disputas AND
startdato:2005
Det finnes pr. i dag to typer mappeinnleveringssøk:
Søk for visning til studenter er sammensatt av flere logiske deler.
Søkeparametre til dette søket er en liste av URI'er (mapper). For hver URI skal det gjøres et søk som returnerer innholdet av hele mappetreet (altså rekursivt) sortert på URI.
Eksempel på søk med input parametre:
'/studier/emner/jus/afin/DRI1002/v06/mappevurdering/innlevering/individuelt/foo'
For hvert element i lista over URI'er (kun ett element i eksemplet) gjøres følgende søk:
'URI:/studier/emner/jus/afin/DRI1002/v06/mappevurdering/innlevering/individuelt/foo/*'
Dette er enkelt enkelt prefikssøk på URI
og kan
realiseres teknisk ved å bruke PARENTIDS fra indeksen, i
stedet for et standard Lucene PrefixQuery,
som er problematisk for denne typen søk (rekursiv
mappelisting kan produsere mange treff/termer).
Dette søker består av fire forskjellige sub-søk:
'URI:/foo/bar/grupper/* AND vortexGroupOwnership:bar@uio.no ANDProperty'en
vortexResourceType:course-work-collection'
vortexGroupOwnership er en liste
av verdier.'URI:/foo/bar/innlevering/individuelt/*/'
'URI:/foo/bar/innlevering/grupper ANDProperty'en
vortexResourceType:course-handin-collection AND
vortexGroupOwnership:bar@uio.no'
vortexGroupOwnershiper en liste av verdier.
Resultatene fra hvert sub-søk settes sammen til ett resultatsett i et eget XML format.
document($emne-mappingfil)/mapping/emne[@emnekode=normalize-
space(current())][@spraak=$doku-spraak]
Tilsvarende søk i kvasi-Lucene syntaks:
resourcetype:emne AND emnekode:$emnekode AND spraak:$spraakAndre relevante brukstilfeller:
| Pri | Søkekonstruksjon | Eksempel på syntaks | Aktuell for bruk i |
|---|---|---|---|
| 1 | Logiske operatorer | and (&&), or (||), not (!=) og equals (=) | |
| 1 | Wildcard (*) i strenger (ikke som 1. tegn i strengen) | emnekode=INF* | Emner sortert etter tema, Emner sortert alfabetisk |
| 1 | Uri lik mappen du er i (eller dypere). En slags "current folder" | uri=./* | Emner sortert etter tema, Hva skjer? |
| 1 | Felt ikke tomt eller eksisterer | emnekode!="" eller emnekode.exists | |
| 1 | Støtte for namespace-prefiks | emne:emnekode="INF1000" | |
| 2 | Representasjon av dagens dato | startdato={$dagens-dato} | Hva skjer? |
| 2 | Operatorer for sammenligninger av tall/datoer | >, <, >=, <= | Emner sortert etter studiepoeng, Hva skjer? |
| 3 | Wildcard matching på nivåer i URL | /studier/emner/*/*/index.xml | |
| 3 | Wildcard (*) først i strenger | emnekode=*INF* |