Inserire una variabile in una query lucene

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-27-2017 02:28 PM
Ciao a tutti,
Sto cercando di scrivere una action che sposta un documento da un folder xx in un folder OBSOLETI.
Per fare ciò estraggo il nome del file che viene inserito nel folder e mi ricavo il nome del folder che inserisco nella variabile "dirName" poi eseguo questa query per ottenere il noderef del folder OBSOLETI che è legata al folder dirName:
String query_folder=("PATH:\"//app:company_home//st:sites//cm:test_site//cm:documentLibrary//cmocumenti//cm:${dirName}//cm
BSOLETI\"AND TYPE:\"cm:folder\"");
spFolderQt.setQuery(query_folder);
rs = this.searchService.query(spFolderQt);
Quando eseguo questa query ricevo un errore lucene.queryParser sul $ di ${dirName} e se lo tolgo l'errore è su {dirName}.
Quale sintassi si usa per inserire una variabile in questa query?
Grazie.
- Labels:
-
Archive
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-04-2017 09:25 AM
Se esegui una query con il token PATH di Lucene devi ricordarti che i singoli termini del percorso devono essere costruiti considerando che non sono relativi al valore della proprietà cm:name ma del valore del child name del nodo del contenuto.
Questo perché Alfresco, come anche altri repository, utilizza lo standard XPath per alberare i nodi del grafo come da standard XML.
Questo significa che il valore di dirName deve essere codificato in ISO9075.
Se usi la Java API dovrai costruire la query in questo modo:
String dirNameISO9075 = ISO9075.encode(dirName);String query_folder=("PATH:\"//app:company_home//st:sites//cm:test_site//cm:documentLibrary//cm:Documenti//cm:"+dirNameISO9075+"//cm:OBSOLETI\"AND TYPE:\"cm:folder\"");
In realtà la stessa cosa andrebbe fatta anche per OBSOLETI se avesse avuto caratteri speciali inclusi nel valore come ad esempio lo spazio.
Nel caso non fosse posizionale, potresti eseguire la seguente query Lucene senza fare l'encoding del valore:
String query_folder="TYPE:\"cm:folder\" AND @cm\\:name:\""+dirName+"\"";
Spero ti aiuti a risolvere

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-20-2017 04:38 PM
Grazie, non ci sarei mai rrivato, di tutti i manuali che ho consultato non ho trovato indicazioni in merito, grazie
