Plugin de recherche floue pour Kirby. Rechercher des correspondances approximatives de requêtes de recherche dans votre contenu n’a jamais été aussi simple.
Ce plugin est construit sur la bibliothèque PHP fuzzget.
Si vous utilisez déjà la méthode search
intégrée Kirby, la remplacer par Fuzzy Search consiste simplement à renommer une méthode sur une collection de pages :
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
La recherche floue n'est compatible avec aucune des autres options disponibles sur la méthode search
Kirby.
Avec la recherche floue, vous pouvez également effectuer une recherche via des méthodes de page personnalisées ou des modèles de page. Il vous suffit d'inclure le nom de la méthode dans le dernier paramètre fuzzySearch
.
// site/plugins/methods.php
page:: $ methods [ ' authorName ' ] = function ( $ page ) {
$ author = $ page -> author ()-> value ();
if ( $ user = site ()-> user ( $ author )) {
return $ user -> firstname (). ' ' . $ user -> lastname ();
}
};
$ query = get ( ' q ' );
$ articles = page ( ' blog ' )
-> children ()
-> visible ()
-> fuzzySearch ( $ query , ' title|text|authorName ' );
La recherche floue est livrée avec une méthode de champ pratique qui vous permet de rechercher des champs de page contenant un ensemble de données, tels que des champs structurés.
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
Le $result
sera également un objet Field
et pas seulement un simple tableau. De cette façon, vous êtes libre de chaîner n'importe quelle méthode Field
, telle que toStructure
, yaml
ou isEmpty
, après avoir effectué une recherche.
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
Vous pouvez également utiliser la fonction fuzzySearch
pour effectuer une recherche dans un tableau de tableaux associatifs.
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
Si vous omettez le dernier paramètre, Fuzzy Search effectuera une recherche dans toutes les clés (champs) dans les données fournies :
site ()-> index ()-> fuzzySearch ( $ query );
C'est la même chose que d'utiliser le caractère générique *
.
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
La recherche floue est très flexible lorsqu'il s'agit de choisir les champs dans lesquels elle doit rechercher des correspondances. Découvrez les autres options :
Si vous souhaitez rechercher un terme donné uniquement dans les champs title
et text
, passez simplement leurs noms dans le dernier paramètre séparés par |
:
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
C'est du sucre de syntaxe pour :
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
Bien entendu, vous pouvez également lister les champs dans lesquels vous ne souhaitez pas effectuer de recherche :
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
Ce qui précède revient à faire :
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
Dans cet exemple, tous les champs seront pris en compte dans la recherche à l'exception de author
et date
.
Si vous devez inclure une méthode de page personnalisée ou une méthode de modèle de page, vous pouvez la combiner avec le caractère générique et ignorer la syntaxe.
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
Ce qui précède inclura tous les champs sauf date
avec $page->authorName()
, dans le cas où il s'agit d'une méthode de page personnalisée ou d'une méthode de modèle de page.
Téléchargez les fichiers et placez-les dans site/plugins/fuzzy-search
.
L'interface de ligne de commande de Kirby facilite l'installation du plugin Fuzzy Search :
$ kirby plugin:install pedroborges/kirby-fuzzy-search
La mise à jour ne pourrait pas être plus simple, exécutez simplement :
$ kirby plugin:update pedroborges/kirby-fuzzy-search
Vous pouvez ajouter le plugin Fuzzy Search en tant que sous-module Git.
$ cd your/project/root
$ git submodule add https://github.com/pedroborges/kirby-fuzzy-search.git site/plugins/fuzzy-search
$ git submodule update --init --recursive
$ git commit -am "Add Fuzzy Search plugin"
La mise à jour est aussi simple que d’exécuter quelques commandes.
$ cd your/project/root
$ git submodule foreach git checkout master
$ git submodule foreach git pull
$ git commit -am "Update submodules"
$ git submodule update --init --recursive
Tous les changements notables apportés à ce projet seront documentés sur : https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md
Le plugin Fuzzy Search est un logiciel open source sous licence MIT.
Copyright © 2017 Pedro Borges [email protected]