cancel
Showing results for 
Search instead for 
Did you mean: 

problema con webscritpt di ricerca

veleno
Champ in-the-making
Champ in-the-making
Ciao a tutti.
Ho creato un client(java) che via webscript chiama alfresco. Ho creato uno scenario di test MA se viene chiamato il webscript alfresco\templates\webscripts\org\alfresco\slingshot\search\search.get.desc.xml mi restituisce 3 risultati (webscript-search.JPG) lato console di amministrazione(webscript-node-browser.JPG) facendo la stessa query, invece, 4(che è il risultato che mi aspetto)!
se quindi uso il webscript alfresco\templates\webscripts\org\alfresco\slingshot\node-browser\node-browser.get.desc.xml risponde correttamente, ma non ha la paginazione e vorrei usare search.get.desc.xml



la query di ricerca è la seguente (tutti i documenti "categorizzati" come Sisal/Prodotti/EUROJ e Sisal/servizi/ACEA presenti nella documentLibrary e in condivisa con tutte le sue sottocartelle)

TYPE:"cm:content" AND (PATH:"/app:company_home/st:sites/cm:sisal/cm:documentLibrary/*" + PATH:"/app:company_home/st:sites/cm:sisal/cm:condivisa//*") AND PATH:"/cm:categoryRoot/cm:generalclassifiable/cmSmiley Frustratedisal/cmSmiley Tonguerodotti/cm:EUROJ/member" AND PATH:"/cm:categoryRoot/cm:generalclassifiable/cmSmiley Frustratedisal/cmSmiley Frustratedervizi/cm:ACEA/member"



ho provato a spostare i documenti in share stesso risultato… funziona solo se le sottocartelle sono tutte dentro documentLibrary  (es PATH:"/app:company_home/st:sites/cm:sisal/cm:documentLibrary/cmSmiley Tonguedv1/*" + PATH:"/app:company_home/st:sites/cm:sisal/cm:documentLibrary/cm:condivisa//*" in questo caso troverà tutti i documenti presenti nella cartella pdv1 e tutti quelli presenti in condivisa e nelle sue sottocartelle)

cosa non ho capito? perchè a parità di query, seppur chiamando 2 servizi diversi, i risultati divergono? non dovrebbero avere lo stesso risultato? usano entrambi la sintassi di Alfresco FTS(*) e non ho specificato il site es:


  String urlWebScript = "http://localhost:9999/alfresco/s/slingshot/search?term=" + encode(query)+"&tag=&container=" + "&sort=&query=&maxResults=1000&pageSize=10&startIndex=0";   
   






(*)https://forums.alfresco.com/forum/developer-discussions/web-scripts/filer-content-site-and-category-...
2 REPLIES 2

davidciamberlan
Elite Collaborator
Elite Collaborator
Ciao,

dunque… ho avuto un po' di tempo per ricreare una struttura di folder simile alla tua ed effettivamente riscontro lo stesso errore: se il nodo è fuori dalla documentLibrary non viene considerato.

Guardando il codice ho scoperto che questo comportamente è voluto… Nel codice del webscript c'è un filtro che fa questo prima di restituire il risultato:

<javascript>

[…]

switch ("" + containerId.toLowerCase())
{
case "documentlibrary":
   item = getDocumentItem(siteId, containerId, pathParts, node, populate);
   break;
case "blog":
   item = getBlogPostItem(siteId, containerId, pathParts, node, populate);
   break;
case "discussions":
   item = getForumPostItem(siteId, containerId, pathParts, node, populate);
   break;
case "calendar":
   item = getCalendarItem(siteId, containerId, pathParts, node, populate);
   break;
case "wiki":
   item = getWikiItem(siteId, containerId, pathParts, node, populate);
   break;
case "links":
   item = getLinkItem(siteId, containerId, pathParts, node, populate);
   break;
case "datalists":
   item = getDataItem(siteId, containerId, pathParts, node, populate);
   break;
}

[…]

</javascript>

poichè per la tua cartella il containerId è "condivisa", l'item viene scartato!

Per risolvere il tuo problema potresti fare una extension (non cambiare il webscript originale!) che sovrascriva il webscript di ricerca e modifichi opportunamente il filtro…


veleno
Champ in-the-making
Champ in-the-making
Grazie mille per la risposta! alfresco non è affatto semplice!

Magari può essere utile a qualcuno: ti segnalo un altro problema avuto sempre con questo webscritp che sembra risolto sostituendo il search engine solr con lucene!!!( http://sonosolobit.it/blog/alfresco-sostituire-solr-con-lucene/   😉 ). Scenario:

1) viene creato un utente che ha i privilegi di owner sulla sua homefolder(webscript custom)(***)
2) nello share entro come amministratore e faccio il download di documenti(sempre assegnati alle categorie)
3) il webscript in questione(evocato con user e pwd dell' owner della cartella) non mi ritorna i documenti caricati dal solo amministratore! solo quelli caricati dal medesimo utente
4) se giocavo con i permessi  (per esempio aggiungevo e toglievo alla folder "eredita permessi") da li funzionava sempre!(restituiva anche altri documenti caricati in seguito (sempre come amministratore)… da qui ho sospettato seriamente potesse essere un problema più legato all'indicizzazione che ai permessi sbagliati
5) tolto solr(che ogni tanto generava errori nel catalina.out) e messo lucene è andato al primo giro(creavo un utente , mi collegavo dal portale e vedevo i documenti)

premessa: i test sono fatti in locale con un runtime enterprise 4.2.1 che aveva solr embedded

(***) porzione di creazione utente preso dal sorgente che interessa lo scenario
this.permissionService.setPermission(homeSpaceRef, userName, permissionService.getAllPermission(), true);
//no solo amministratore e owner possono avere i diritti sulla cartella in questione
//     String permission = PERMISSION_HOME_FOLDER_DEFAULT  
//     if (permission != null && permission.length() != 0)
//     {
//        this.permissionService.setPermission(homeSpaceRef, permissionService.getAllAuthorities(), permission, true);
//     }
    
     // the new user is the OWNER of their own space and always has full permissions
     this.ownableService.setOwner(homeSpaceRef, userName);
    
     this.permissionService.setPermission(homeSpaceRef, permissionService.getOwnerAuthority(), permissionService.getAllPermission(), true);
    
     // now detach (if we did this first we could not set any permissions!)
     this.permissionService.setInheritParentPermissions(homeSpaceRef, false);