cancel
Showing results for 
Search instead for 
Did you mean: 

limiter les recherches

steph60fr
Champ in-the-making
Champ in-the-making
Bonjour,

J'utilise Alfresco comme entrepôt et j'ai développé une page appelant la base avec les requêtes du type :
if ( $currentTitre != null ) {$recherche.=' AND @cm\:title:"'.$currentTitre.'"';}
if ( $currentAuteur != null ) {$recherche.=' AND @cm\:author:"'.$currentAuteur.'"';}
et j'ai 2 problèmes !!

Primo ma requête ne fonctionne pas si la casse (minuscule ou majuscule) n'est pas strictement identique  :evil:

Deuxio, ma requête (qui fonctionne) me donne tout sur une page et je voudrais limiter à 10 résultats par pages avec un lien pour les suivantes. Avec mysql on peut utiliser LIMIT mais là je ne vois pas comment faire, si quelqu'un a déjà eu la question Smiley Tongue

Stephane

PS: j'utilise alfresco v2.9
7 REPLIES 7

christophes
Champ in-the-making
Champ in-the-making
Si ta page est définie en FTL, tu peux limiter l'affichage en mettant simplement une condition de sortie basée sur un compteur dans ta liste. Exemple:
<#assign recherche = companyhome.childrenByLuceneSearch[ta_requete]>
<#assign compteur = 0>
<#list recherche as child>
   <#if compteur = 10>
      <#break>
   </#if>
   
   …
   
   <#assign compteur = compteur + 1>
</#list>
Pour les pages suivantes, tu fais pareil en mettant comme condition que le compteur doit être compris entre 10 et 20, puis entre 20 et 30… Si le compteur est inférieur, tu n'affiches pas et si il est supérieur, tu fais un break car tu n'as pas besoin d'aller plus loin.

Pour ce qui est de ta première question par contre, je ne vois pas de solution.

Christophe

steph60fr
Champ in-the-making
Champ in-the-making
En fait j'utilise une page php qui appel les données

Mon code :
require_once('Alfresco/Service/Repository.php');
require_once('Alfresco/Service/Session.php');
require_once('Alfresco/Service/SpacesStore.php');
require_once('Examples/config.php');

$currentTitre = null;
$currentAuteur = null;

if (isset($_SESSION) == false)
{
   session_start();
}

if (isset($_REQUEST['titre']) == true) {$currentTitre = $_REQUEST['titre']; }
if (isset($_REQUEST['auteur']) == true) {$currentAuteur = $_REQUEST['auteur']; }


// Start the Alfresco session
$repository = new Repository($repositoryUrl);
$ticket = $repository->authenticate($userName, $password);
$session = $repository->createSession($ticket);


$store = new SpacesStore($session);

$nodes = null;
if ($currentTitre != null || $currentAuteur != null)
{
   $recherche = 'ASPECT:"ce:documentation"';
   if ( $currentTitre != null ) {$recherche.=' AND @cm\:title:"'.$currentTitre.'"';}
   if ( $currentAuteur != null ) {$recherche.=' AND @cm\:author:"'.$currentAuteur.'"';}
   $nodes = $session->query($store, $recherche);
}

Puis je fais des appels
'.$document->cm_title.'

christophes
Champ in-the-making
Champ in-the-making
Dans ce cas, je vais laisser ma place à quelqu'un d'autre car je ne connais pas le PHP.

Christophe

rguinot
Confirmed Champ
Confirmed Champ
Concernant les requêtes case sensitive ou non je t'invite a te familiariser avec le processus de tokenisation de Lucene, plus d'infos ici : http://wiki.alfresco.com/wiki/Search#Lucene

Concernant le paging des résulats, Lucene ne supporte pas directement le paging avec un curseur. Ceci n'est pas bien grave étant donné qu'au moins 80% du temps CPU sera passé dans les permission checks sur le repository(ce que l'utilisateur a le droit de voir ou pas) , et pas sur l'execution de la requête.
Pour afficher les résultats N par page, vous pouvez passer l'offset de début (et optionnellement de fin pour avoir des resultsets de taille variable) en paramètre GET puis l'exploiter via args.

puis lister la partie pertinente des résultats du style :

<#list node_list[page_boundaries?first..page_boundaries?last] as node> 

ou la même chose dans une autre API…

steph60fr
Champ in-the-making
Champ in-the-making
Ok merci, je vais regarder le wiki

Sinon, concernant le paging, utilisant une page php, <#list ne vas pas fonctionner
je vais continuer à chercher Smiley Happy

Merci pour votre aide

rguinot
Confirmed Champ
Confirmed Champ
Oui, c'est normal ! C'est du Freemarker Smiley Happy c'est pour cela que j'ai dit
ou la même chose dans une autre API…

steph60fr
Champ in-the-making
Champ in-the-making
ok Smiley Happy

J'ai regardé le wiki mais étant moyennement doué pour l'anglais, j'ai cru comprendre qu'en entrant TEXT:"xxx" quelque soit la casse de xxx cela ne fonctionne pas, désolé, je suis un boulet !!!  :mrgreen:
Comment je peux configurer le champ pour ne pas avoir ce probleme ?
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.