Wyszukiwanie węzłów w Alfresco, Część 1

20 lipca 2009 | 0 komentarze

Alfresco wspiera wyszukiwanie węzłów (nodes) przez zapytania XPath i Lucene. Implementacja pierwszego jest wymagana przez specyfikację JSR-170. Lucene daje za to większe możliwości rozbudowy języka zapytań i jest metodą rekomendowaną.

Query można uruchamiać wprost z GUI - z poziomu Node Browser (link w konsoli administracyjnej). Po uruchomieniu Browser prosi o wybranie workspace (workspace://SpacesStore).


Alfresco udostępnia API do wyszukiwania: SearchService (JAVA) i Search API (WebScripts).

Poniżej zamieszczam przegląd możliwości języka Lucene z przykładami. Wyniki zapytań mogą różnić się w zależności od wersji.

Wyszukiwanie po dowolnych polach: (@xx/:nazwa:)

Nazwy pól są w postaci QName (qualified name) - występują w formie pełnej (pełna nazwa namespace z protokołem) lub skróconej.
@cm\:userName:"admin"
@cm\:lastName:"w*"
Wyszukiwanie pełnotekstowe (TEXT)
TEXT:"izotopy węgla"
Wyszukiwanie po referencji (ID), referencji rodzica (PARENT , PRIMARYPARENT)

Referencja węzła (NodeRef) = protokół://workspace/UUID obiektu
ID:"workspace://SpacesStore/510e0049-7d3f-4f3e-823d-8314b749b4a9"
PARENT:"workspace://SpacesStore/984bffc5-ef6c-4e72-9fc6-7d353d7e5264"
Ścieżka XPath (PATH)

Ścieżka nie może zawierać znaków specjalnych - wymagane kodowanie ISO9075.
PATH:"/app:company_home"
PATH:"/app:company_home/app:guest_home"
PATH:"/app:company_home/app:user_homes/*"
PATH:"/app:company_home//*"
Według przypisanego aspektu (ASPECT, EXACTASPECT)
TYPE:"cm:content" AND ASPECT:"cm:versionable"
Typ węzła (TYPE)

Podstawowe typy węzłów: cm:content, cm:link, cm:category, cm:person, cm:folder.
TYPE:"cm:category"
Nazwa kwalifikowana (QNAME)

QName pod którym jest widoczny węzeł, bez namespace, kodowanie ISO9075.
QNAME:faktura_x0020_42812.ods
QNAME:f*
QNAME:*.ods
Stan pola (ISUNSET, ISNULL, ISNOTNULL)
ISNULL:"cm:title"
Operatory (+, -, AND, OR, NOT), wildcards (*, ?), grupowanie
TYPE:"cm:content" AND TEXT:"L?n*" - ASPECT:"cm:versionable"
(TYPE:"cm:category" AND TEXT:"k*") OR (TYPE:"cm:folder" AND QNAME:k*)
Zakresy wartości: zakmnięty [... TO ...], otwarty {... TO ...}
@cm\:lastName:[c TO e]
@cm\:lastName:{talar TO toczko}
Wyszukiwanie podobnych fraz - odległość Levenshtein'a

Parametr określa stopień podobieństwa w zakresie od 0 (małe) do 1 (duże) - domyślnie 0.5.
TEXT:alkan~
TEXT:hiduminium~0.3
Bliskość położenia frazy (proximity)

Parametr wskazuje maksymalną odległość słów od siebie.
TEXT:"endopeptydaza pepsyna"~7
Priorytet frazy (boost)

Liczba wskazuje ważność.
TEXT:"Notogea" OR TEXT:"Antarktis"^2

Więcej na stronach wiki.

0 komentarze: