Recherche avec lucene en erreur. Failed to porse Xpath

cancel
Showing results for 
Search instead for 
Did you mean: 
alextenev
Member II

Recherche avec lucene en erreur. Failed to porse Xpath

Bonjour,

je tente par tous les moyens de faire une recherche de tous les documents ayant un état particulier d'un site share.
J'ai développé tout un script, malheureusement, je bloque sur la recherche lucene.

Apres avoir passé une journée de différents tests, j'arrive sur cette ligne de recherche sur lequel il bloque
         result1 =search.luceneSearch('+PATH:"//app:company_home//st:sites//cm:'+site.shortName+'//cm:documentLibrary//*" AND +TYPE:"mybc:bc" AND @mybc\\:etatbc:\"Recue"');


or voici le message d'erreur que je recupere a l'execution du script dans la catalina.out


2015-12-09 16:52:46,577  ERROR [solr.core.SolrCore] [http-bio-8443-exec-57] org.apache.solr.common.SolrException: org.apache.solr.search.SyntaxError: org.apache.lucene.queryparser.classic.ParseException: Cannot parse '+PATH:"//app:company_home//st:sites//cm:931140000//cm:documentLibrary//*" AND +TYPE:"mybc:bc" AND @mybc\:etatbc:"Recue"': Failed to parse XPath…
Unexpected '931140000'
        at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:205)
        at org.apache.solr.handler.component.AlfrescoSearchHandler.handleRequestBody(AlfrescoSearchHandler.java:233)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1962)


Je comprend qu'il me dit qu'il ne trouverai pas le dossier 931140000, or ce dernier existe bien, et est bien en cm (controlé depuis le node explorer depuis l'interface d'admin)

Voici un extrait du contenu du st:sites via l'interface d'admin

Fils (68)
Nom   Référence de l'enfant   Primaire   Type d'association   Index
cm:surf-config   workspace://SpacesStore/86b396ea-fc6a-4470-97e9-5f2f7106c8ca   true   cm:contains   0
cm:931140000   workspace://SpacesStore/46a49569-3f73-4d63-bd00-0d58150ab39a   true   cm:contains   1
cm:931140100   workspace://SpacesStore/c0c0f655-1a5b-48c3-a3d1-72263115321c   true   cm:contains   2


Je ne comprend pas ce qui cloche dans cette recherche.

Merci de votre réponse.
Alexandre
5 Replies
cleseach
Active Member II

Re: Recherche avec lucene en erreur. Failed to porse Xpath

Bonjour,

Votre expression PATH est construites avec des "//" utilisez de "/".
Pour mettre au point votre recherche, je vous conseille d'utiliser le navigateur de noeuds et de tester chaque expression unitairement avant de les combiner.

Cordialement,
Charles Le Seac'h
alextenev
Member II

Re: Recherche avec lucene en erreur. Failed to porse Xpath

Merci de votre reponse.
J'avais effectivement deja essayé avec la recherche en direct, avec plusieurs possiblité.
Je viens a nouveau de faire le test en remplacant les // par /

PATH:"/app:company_home/st:sites/cm:931140000/cm:documentLibrary/*"

J'ai toujours la meme erreur

Failed to parse XPath…
Unexpected '931140000'


J'ai également essayé cette possibilité, mais c'est toujours la même erreur.


PATH:"/app:company_home/st:sites/cm:931140000/cm:documentLibrary//*"


J'ai ensuite fait plusieurs test


PATH:"/app:company_home/st:sites//*"

</code>
J'ai bien 2000 resultats, j'ai récupéré le nom du site du premier document affiché.

PATH:"/app:company_home/st:sites/cm:937156100/cm:documentLibrary//*"

Toujours la meme erreur dans catalina.out

Failed to parse XPath…
Unexpected '937156100'


Pourtant, apres vérification dans la console d'admin, le site est bien en "cm:"

Bref,je ne comprend pas.
cleseach
Active Member II

Re: Recherche avec lucene en erreur. Failed to porse Xpath

Bonjour,

Lorsque l'on utilise des expressions PATH, il est nécessaire d'encoder les termes du path en ISO9075 (cf. org.alfresco.util.ISO9075)
Avec un tel encodage, le shortname de votre site sera quelque peu différent de ka forme que vous utilisez ;-)

Petit truc au passage, lorsqu'une recherche PATH ne fonctionne pas, vous pouvez utiliser le navigateur de noeud pour identifier le bon PATH à utiliser.

Cordialement,
Charles Le Seac'h
alextenev
Member II

Re: Recherche avec lucene en erreur. Failed to porse Xpath

Merci. Effectivement, le probleme etait cet encodage. C'est au top.
POur ceux qui tomberait sur un probleme equivalent voici pour ma part la reponse.

result1 = search.luceneSearch("TYPE:\"mybc:bc\" AND @mybc\\:etatbc:\"Recue\" +PATH:\"/app:"+search.ISO9075Encode("company_home")+"/st:"+search.ISO9075Encode("sites")+"/cm:"+search.ISO9075Encode(site.shortName)+"/cm:"+search.ISO9075Encode("documentLibrary")+"//*\"");
          
cleseach
Active Member II

Re: Recherche avec lucene en erreur. Failed to porse Xpath

Bonjour,

Merci pour votre retour positif.
Un truc de plus : vous pouvez optimiser un peu la construction de votre requête. En effet, "company_home", "sites" et "documentlibrary" sont des chapines de caractères fixes pour lesquels l'encodage ISO9075 n'apporte rien. Vous pouvez donc vous passer de cette étape d'encodage.
Conservez-la uniquement pour le nom du site.

Cordialement,
Charles Le Seac'h