# API PHP des domaines de recherche
# Recherche sur un domaine
Le filtre Anakeen\Fullsearch\FilterMatch
est un opérateur de filtre. Il permet
d'ajouter un filtre lié à un domaine de recherche.
$s = new \Anakeen\Search\SearchElements();
$filter = new \Anakeen\Fullsearch\FilterMatch("MyDomain", $pattern);
$s->setSlice(10);
$s->addFilter($filter);
$results = $s->search()->getResults();
# Ordonnancement par pertinence
Le calcul de l'ordonnancement est faite à l'aide des poids indiqués.
Le filtre Anakeen\Fullsearch\FilterMatch
fourni la méthode getRandOrder()
permettant de définir l'ordre par
pertinence.
$s = new \Anakeen\Search\SearchElements();
$filter = new \Anakeen\Fullsearch\FilterMatch("MyDomain", $pattern);
$s->setSlice(10);
$s->addFilter($filter);
$s->setOrder($filter->getRankOrder());
$results = $s->search()->getResults();
# Mise en évidence des termes trouvés
La classe Anakeen\Fullsearch\FilterHighlight
permet d'avoir la terme recherché mis en évidence dans les données
indexées. Le constructeur prend en entrée l'identifiant de domaine de recherche.
Les méthodes setStartSel()
et setStopSel()
permette de modifier les caractères encadrant les termes à mettre en
évidences (par défaut double accolades {{
... }}
).
$s = new \Anakeen\Search\SearchElements();
$filter = new \Anakeen\Fullsearch\FilterMatch("MyDomain", $pattern);
$s->setSlice(10);
$s->addFilter($filter);
$s->setOrder($filter->getRankOrder());
$results = $s->search()->getResults();
$names = [];
$c = 1;
$h = new \Anakeen\Fullsearch\FilterHighlight("MyDomain");
$h->setStartSel("\x1b[30;42m");
$h->setStopSel("\x1b[0m");
foreach ($results as $smartElement) {
printf("%02d) %s\n", $c++, $smartElement->getTitle());
$light = $h->highlight($smartElement->id, $pattern);
print "\t$light";
print "\n=======\n";
}
# Indexation des données de recherches
# Indexation d'un domaine
Le mise à jour des données pour un domaine est faite par la méthode
Anakeen\Fullsearch\SearchDomain::updateIndexSearchData()
. Elle ne prend en compte que les Smart Element modifié depuis
la dernière indexation.
Une callback peut être fournie. Elle est appelée avant chaque mise à jour d'une indexation. Elle prend en paramètre le Smart Element courant.
$domain = new \Anakeen\Fullsearch\SearchDomain("MyDomain");
$domain->updateIndexSearchData(function (\Anakeen\SmartElement $se) {
printf("%s\n", $se->getTitle());
});
# Indexation d'un Smart Element
La méthode Anakeen\Fullsearch\SearchDomainManager::updateSmartElementSearchData()
réalise l'indexation des données de
recherche d'un Smart Element pour tous les domaines enregistrés.
$se = \Anakeen\Core\SEManager::getDocument($id);
\Anakeen\Fullsearch\SearchDomainManager::updateSmartElementSearchData($se);
# Gestion des domaines de recherches
# Reset des données de recherche
La méthode \Anakeen\Fullsearch\SearchDomain::reindexSearchData()
supprime toutes les données de recherche du domaine.
Elle réalise ensuite une réindexation complète des données?
$domain = new \Anakeen\Fullsearch\SearchDomain("MyDomain");
$domain->reindexSearchData(function (\Anakeen\SmartElement $se) {
printf("%s\n", $se->getTitle());
});