Project

General

Profile

Actions

Kommandosøgning

Opdateret den 8. september 2015

Denne vejledning er lavet til DDB CMS 2.+ og opensearch 4.x versionerne som integration til Brønd 3.

Fra DDB CMS 1.1 (januar 2015), der benytter open search 3.2, skal man være opmærksom på følgende ændringer som er oplyst af DBC:

  • Plinger om alle søgeargumenter (Eksempel: term.creator="stephen king")
  • Operatorer: kun operatorer der står med versaler opfattes som operatorer – og omsættes til de engelske og med småt.
  • Opensearch 3.2 sætter ”and” mellem alle ord hvor der ikke er en operator i forvejen (eller helt præcist laver den en nærhedssøgning hvor nærhed er sat til 99999 – i praksis svarer det til ”og”)
  • Plinger er kun obligatorisk ved flere ord, men for nemheds skyld sættes de altid.
opensearch 3.0 opensearch 3.2
term.creator=stephen king term.creator="stephen king"

Søgekoder

Søgningerne foretages ved at kombinere kolonnerne namespace og index i http://opensearch.addi.dk/4.0.1/opensearch_cql.xml. Eksempel: dkcclphrase.lem=fantasy

Boolske operatorer, maskering og trunkering
Koderne kan kombineres med "AND", "NOT", "OR", "any" eller "all" der skal skrives med versaler og på engelsk.
"" (stjerne) bruges til at søge på alle endelser af et ord, f.eks. paryk - søger på ordene paryk, parykker, parykkerne, parykmager osv.
"\" bruges til at escape f. eks. ? der indgår i en titel og dermed ikke skal fungere som maskering eller trunkering.
"any" kan bruges i stedet for = og sætter OR imellem alle ord i en frasesøgning
"all" kan bruges i stedet for = og sætter AND imellem alle ord i en frasesøgning

term.title Søger på: Hovedtitel, undertitel, serietitel (incl. numre) sæt ” ” for frasesøgning.
term.title=genfærd spøgelser
term.title=hypnotisøren
term.title="karitas uden titel"

term.creator Søger på personnavn(e) der står som ophav, koorporationsnavn(e) der står som ophav
term.creator="stephen king"
term.creator=nesbø
term.creator="jo nesbø"

term.subject Søger efter ukontrollerede emneord, kontrollerede emneord, personer og koorporationer der står som emne
term.subject=hunde
term.subject=opera

term.description Søger i diverse notefelter – herunder f.eks. målgruppe. + udgave- og oplagsbetegnelse
term.description="fra 5 år"

term.publisher Søger på forlagets navn og hjemstedet for forlaget
term.publisher=gyldendal
term.publisher=oxford

term.date Søger på udgivelses år (også genoptryk/oplag)
term.date=2013
term.date=201* (= 2010 eller 2011 eller 2013 …)

facet.date Søger på det originale udgivelses år (ikke genoptryk/oplag)
facet.date=2013
term.type Søger på materialetyper
term.type=cd
term.type=mp3
term.type=dvd
term.type=bog
term.type=tidsskrift

term.identifier Søger på isbn, issn og ismn numre
term.identifier=9788770790031

term.source Søger på original titlen
term.source=rapsbaggarna

term.language Søger efter materialer på et bestemt sprog
term.language=dansk
term.language=tysk

facet.fiction Søger på skønlitterære emneord
facet.fictionSubject=fantasy
facet.fictionSubject=krimi

facet.nonFiction Søger på fag emneord (ikke skønlitteratur)
facet.nonFictionSubject=badminton
facet.nonFictionSubject=hunde

facet.category Søger på materialer for børn / voksne
facet.category=børnematerialer
facet.category=voksenmaterialer

OBS. I opensearch 3.0 kan * ikke indgå i frasesøgninger
|.opensearch 3.0|.opensearch 3.1|
|facet.subject=børn|facet.subject="børn"|

Find materialer anskaffet efter en bestemt dato
term.acquisitionDate>=20150301
Dvs. nye materialer efter første mars 2015

Kombinerede søgninger

Formål opensearch 3.0 opensearch 4.0.1
Søger country musik på cd term.type=cd AND term.subject=country term.type="cd" AND term.subject="country"
Søger opera på dvd term.type=dvd AND term.subject=opera term.type="dvd" AND term.subject="opera"
Søger spillefilm på dvd term.type=dvd AND facet.dk5=77.7 term.type="dvd" AND facet.dk5="77.7*"
Søger rejsebøger om London facet.nonFiction=london AND term.subject=rejse* facet.nonFiction="london" AND term.subject="rejse*"
Søger fantasy romaner for børn fra 2013 facet.fictionSubject=fantasy AND facet.category=voksenmaterialer AND facet.category=børnematerialer facet.fictionSubject="fantasy" AND facet.category="voksenmaterialer" AND facet.category="børnematerialer"
Søger materialer med noten "Fra 5 år" ELLER "Fra 6 år" term.description="fra 5 år" OR "fra 6 år" term.description="fra 5 år" OR "fra 6 år"
Søger tidsskriftet "Illustreret videnskab" term.type="tidsskrift" AND "illustreret videnskab" term.type="tidsskrift" AND "illustreret videnskab"
Nyeste materialer de seneste 60 dage term.acquisitionDate<now-60days term.acquisitionDate<"now-60days"

Se Mapning af danMarc2 til DKABM på http://biblstandard.dk/abm/doc/danMARC2_til_DKABM.pdf for nærmere detaljer om hvilke felter i danmarc2 felterne i DKABM formatet dækker over. Det vil generelt sige alle de namespaces i http://opensearch.addi.dk/4.0.1/opensearch_cql.xml der ikke indeholder dkccl.

Eksempler til opensearch klienten (http://opensearch.addi.dk/4.0.1/)

Trunkering og escaping af ? og *

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>lti=way&#92;*</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

viser en søgning på way\* og finder faktisk posten med titler way*

\ svarer til \

Bruges \ direkte i xml'en, skal den blot selv escapes med \, dvs :

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>lti=way\*</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Det samme gælder for ?, som maskerer netop et tegn, fx den klassiske:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>wom?n</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Herfra og ned gælder for version 3.2 og frem

cql any:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti any "Hvad kan man som dagpengemodtager"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

vil lave en OR'et søgning af ordene.

cql all:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti all "Hvad kan man som dagpengemodtager"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

laver en lang and'et søgning af ordene, hvilket ikke er det samme som:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti = "Hvad kan man som dagpengemodtager"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

som søger ordene med den nærhed ti-registrert er sat op til i opensearch_cql.xml - hvilket er 20 for bibliotek.dk

man kan bruge adj i stedet for =

Man kan bruge word eller string som "term format modifier"

fx:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti =/string "Hvad kan man"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

som sætter nærhed til 0, dvs ordene skal stå ved siden af hinanden.

Dvs det giver ikke det samme som

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti =/string "Hvad man kan"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Man kan overtrumfe en givet nærhed for fx. ti, som jo var 20) med:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti =/word "Hvad kan man"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

hvorved nærheden bliver sat til 9999 (hvilket svarer til en and-operation)

Dvs man får samme resultat med:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://oss.dbc.dk/ns/opensearch">
  <SOAP-ENV:Body>
    <ns1:searchRequest>
      <ns1:query>ti =/word "Hvad man kan"</ns1:query>
      <ns1:agency>100200</ns1:agency>
      <ns1:profile>test</ns1:profile>
      <ns1:start>1</ns1:start>
      <ns1:stepValue>1</ns1:stepValue>
      <ns1:queryDebug>true</ns1:queryDebug>
    </ns1:searchRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Man kan ikke selv styre nærheden i cql med "term format modifier". Som jeg læser standarden, skal man implementere prox operatoren for at kunne det. Nytteværdien er nok også til at overse med de andre muligheder der er.

true inkluderer i resultatet, hvori man ofte kan se hvorledes søgningen omsættes til solr og hvordan den så opfatter det.

Updated by Rolf Madsen about 5 years ago · 26 revisions