Standaarden:SRU/Edurep CQL: verschil tussen versies

Uit Kennisnet Developers Documentatie
Naar navigatie springen Naar zoeken springen
k (Muskee01 heeft pagina Edurep:CQL hernoemd naar Standaarden:SRU/Edurep CQL)
(make generic)
Regel 1: Regel 1:
Op Edurep draait niet de [[Standaarden:SRU|standaard CQL]] versie, maar een [https://github.com/seecr/cqlparser aangepaste]. Hiermee kan Edurep zoekvragen afhandelen met de volgende eigenschappen:
+
Op Edurep en de Catalogus Service draait niet de standaard CQL versie, maar een [https://github.com/seecr/cqlparser aangepaste]. Hiermee kunnen de zoekinterfaces zoekvragen afhandelen met de volgende eigenschappen:
 
* De waarde van het query argument mag maximaal 4096 tekens zijn, na urldecoding.
 
* De waarde van het query argument mag maximaal 4096 tekens zijn, na urldecoding.
* Er kan binnen specifieke metadata [[Edurep:Veldenlijst|velden]] gezocht worden, met "=" of met "exact" matching.
+
* Er kan binnen specifieke metadata velden gezocht worden, met "=" of met "exact" matching.
 
* Er kunnen meerdere termen voorkomen, waarin booleaanse operatoren als AND, OR en NOT gebruikt kunnen worden.
 
* Er kunnen meerdere termen voorkomen, waarin booleaanse operatoren als AND, OR en NOT gebruikt kunnen worden.
 
* De zoekwoorden kunnen alleen letters en cijfers bevatten. Vanwege het indexatieproces zijn speciale karakters als # en $ zijn niet doorzoekbaar.
 
* De zoekwoorden kunnen alleen letters en cijfers bevatten. Vanwege het indexatieproces zijn speciale karakters als # en $ zijn niet doorzoekbaar.
 
* Wildcard zoeken is beperkt mogelijk. Zoeken op fiets* is wel mogelijk maar *fiets niet. De fiets* is mogelijk met minimaal 2 karakters. Het zoeken met het wildcard teken in een string (infix) is ook mogelijk, ook met minimaal 2 voorloopkarakters. Er mag maximaal 1 * voorkomen per trefwoord.
 
* Wildcard zoeken is beperkt mogelijk. Zoeken op fiets* is wel mogelijk maar *fiets niet. De fiets* is mogelijk met minimaal 2 karakters. Het zoeken met het wildcard teken in een string (infix) is ook mogelijk, ook met minimaal 2 voorloopkarakters. Er mag maximaal 1 * voorkomen per trefwoord.
 
* Er kan binnen velden op de volgende manier gezocht worden: query=(veld1=waarde1+or+veld1=waarde2)+and+(veld2=waard3+or+veld2=waarde4).
* Alle records kunnen opgevraagd worden met de ''edurep'' zoekterm.
 
  +
* Er is een veldenlijst voor [[Edurep:Veldenlijst|Edurep]] en voor de [[CS:Veldenlijst|Catalogus Service]].
* Er kan binnen [[Edurep:Veldenlijst|velden]] op de volgende manier gezocht worden: query=(veld1=waarde1+or+veld1=waarde2)+and+(veld2=waard3+or+veld2=waarde4.
 
   
 
{{EdurepQuery|query=fiets AND pomp}}
 
{{EdurepQuery|query=fiets AND pomp}}
Regel 13: Regel 13:
 
{{EdurepQuery|query=lom.technical.format exact "application/pdf"}}
 
{{EdurepQuery|query=lom.technical.format exact "application/pdf"}}
 
{{SmbQuery|query=smo.hReview.info exact "http://wikiwijs.samendelen.nl/get/smpid:5585/DS1"}}
 
{{SmbQuery|query=smo.hReview.info exact "http://wikiwijs.samendelen.nl/get/smpid:5585/DS1"}}
  +
{{CatalogusServiceQuery|query=Title=techniek AND Price<500}}
   
 
=== encoding ===
 
=== encoding ===

Versie van 14 jan 2019 17:36

Op Edurep en de Catalogus Service draait niet de standaard CQL versie, maar een aangepaste. Hiermee kunnen de zoekinterfaces zoekvragen afhandelen met de volgende eigenschappen:

  • De waarde van het query argument mag maximaal 4096 tekens zijn, na urldecoding.
  • Er kan binnen specifieke metadata velden gezocht worden, met "=" of met "exact" matching.
  • Er kunnen meerdere termen voorkomen, waarin booleaanse operatoren als AND, OR en NOT gebruikt kunnen worden.
  • De zoekwoorden kunnen alleen letters en cijfers bevatten. Vanwege het indexatieproces zijn speciale karakters als # en $ zijn niet doorzoekbaar.
  • Wildcard zoeken is beperkt mogelijk. Zoeken op fiets* is wel mogelijk maar *fiets niet. De fiets* is mogelijk met minimaal 2 karakters. Het zoeken met het wildcard teken in een string (infix) is ook mogelijk, ook met minimaal 2 voorloopkarakters. Er mag maximaal 1 * voorkomen per trefwoord.
  • Er kan binnen velden op de volgende manier gezocht worden: query=(veld1=waarde1+or+veld1=waarde2)+and+(veld2=waard3+or+veld2=waarde4).
  • Er is een veldenlijst voor Edurep en voor de Catalogus Service.
/edurep/sruns: query=fiets AND pomp
/smo/sruns: query=saai
/edurep/sruns: query=lom.general.title=fiets AND lom.general.description=zadel
/edurep/sruns: query=lom.technical.format exact "application/pdf"
/smo/sruns: query=smo.hReview.info exact "http://wikiwijs.samendelen.nl/get/smpid:5585/DS1"
Catalogus Service: query=Title=techniek AND Price<500

encoding

In Edurep is niet letterlijk te zoeken op speciale karakters als ü of ë. Deze karakters moeten eerst geëncodeerd worden naar UTF-8. Zoeken op "poëzie" resulteert dan in de volgende query: "poëzie". Op het internet zijn diverse overzichtslijsten en conversietools te vinden.

De waarden van SRU argumenten moeten URL-encoded worden opgegeven omdat een verzoek anders verkeerd kan worden geïnterpreteerd.

te zoeken url http://www.test.urls.nl/~user/index.html&argument=alsotest
query argument smo.hReview.info="http://www.test.urls.nl/~user/index.html&argument=alsotest"
url-encoded representatie smo.hReview.info%3D%22http%3A%2F%2Fwww.test.urls.nl%2F%7Euser%2Findex.html%26argument%3Dalsotest%22

boolean voorkeur

In de Edurep CQL variant hebben de ondersteunde booleans niet allen dezelfde voorkeur. Hieronder staat een CQL query en de (vereenvoudigde) wijze waarop deze wordt geïnterpreteerd door de gebruikte cqlparser.

"vertelplaten NOT lom.rights.cost=yes NOT lom.technical.format=non-digital NOT about.repository.id exact FENC"
CQL_QUERY
(
  (
    (
      (
        (
          'vertelplaten'
        ),
        BOOLEAN('not'),
		
        'lom.rights.cost=yes'
      ),
      BOOLEAN('not'),

      'lom.technical.format=non-digital'
    ),
    BOOLEAN('not'),

    'about.repository exact FENC'
  )
)

Installeer en uitvoeren in Python:

 >>> from cqlparser import parseString
 >>> print parseString("aap").prettyPrint()