Portale di ricerca

From ARAV
Jump to: navigation, search

per la ricerca viene usato un motore di ricerca lucene esposto via interfaccia http.

l'implementazione usata e' Clucene.

ogni azione e' accessibile attraverso un path distinto.

gli id e le query sono encodati in formato base64 variante fs-safe e url-safe, rfc4648 sez. 5 .

Contents

Indicizzazione

il documento viene caricato in formato XML-RDF via metodo POST. il formato del documento e' di questo tipo: http://www.arkiwi.org/arav_cache/cGFub3JpL2ZhbGFmZWxleHByZXNzLm9nZw.xml

dove l'id del documento sara cGFub3JpL2ZhbGFmZWxleHByZXNzLm9nZw (about di rdf)

l'endopint e' http://pagliaio.arkiwi.org/index/ con due campi POST:

  • 'id': l'id del documento (il path in base64)
  • 'document': i metadati in xml (in base64 ?)

Cancellazione

accetta via metodo GET l'id del documento da cancellare

l'endopint e' http://pagliaio.arkiwi.org/delete/

  • 'id': l'id del documento (il path in base64)


Aggiornamento

in lucene l'aggiornamento di un documento non esiste si fa cancellando e poi reindicizzando

data la frequenza dell'operazione vale la pena di fare un endpoint update che provvede a fare le due manovre.

l'endopint e' http://pagliaio.arkiwi.org/update/ con due campi POST identici a quelli di index:

Ricerca

accetta via metodo GET la query encodata in base64

torna lista degli id dei doc trovati

l'endopint e' http://pagliaio.arkiwi.org/search/

  • 'query': la query lucene encodata in base64

Ottimizzazione

l'endopint e' http://pagliaio.arkiwi.org/optimize/


processamento delle query

le query hanno alcune features in piu rispetto alla sintassi lucene:

  $query = str_replace("now", time(), $query);
   $timeobjs = array("minute" => 60,
                     "hour" => 3600,
                     "day" => 86400,
                     "week" => 604800,
                     "month" => 2592999,
                     "year" => 31536000);
   $query = preg_replace('/([\d]+?)([a-z]+?)ago/e','(time() - ("$1" * $timeobjs[$2]))', $query);
   // separatori
   $query = str_replace(",", " ", $query);
   
   $query = str_replace("'", "\"", $query);
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox