Complemento de búsqueda difusa para Kirby. Buscar coincidencias aproximadas de consultas de búsqueda en su contenido nunca ha sido tan fácil.
Este complemento está construido sobre la biblioteca PHP fuzzget.
Si ya está utilizando el método search
integrado de Kirby, reemplazarlo con Búsqueda difusa es solo cuestión de cambiar el nombre de un método en una colección de páginas:
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
Fuzzy Search no es compatible con ninguna de las otras opciones disponibles en el método search
de Kirby.
Con Fuzzy Search también puede buscar a través de métodos de página personalizados o modelos de página. Solo necesita incluir el nombre del método en el último parámetro 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 ' );
Fuzzy Search viene con un práctico método de campo que le permite buscar en campos de página que contienen un conjunto de datos, como campos estructurados.
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
El $result
también será un objeto Field
y no solo una simple matriz. De esa manera, podrá encadenar cualquier método Field
, como toStructure
, yaml
o isEmpty
, después de realizar una búsqueda.
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
También puede utilizar la función fuzzySearch
para buscar en una matriz de matrices asociativas.
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
Si omite el último parámetro, la búsqueda difusa buscará en todas las claves (campos) de los datos proporcionados:
site ()-> index ()-> fuzzySearch ( $ query );
Es lo mismo que usar el comodín *
.
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
Fuzzy Search es muy flexible a la hora de elegir qué campos debe buscar coincidencias. Consulta las otras opciones:
Si desea buscar un término determinado solo en los campos title
y text
, simplemente pase sus nombres en el último parámetro separados por |
:
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
Esa es la sintaxis de azúcar para:
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
Por supuesto, también puede enumerar los campos en los que no desea buscar:
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
Lo anterior es lo mismo que hacer:
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
En este ejemplo, todos los campos se considerarán en la búsqueda excepto author
y date
.
Si necesita incluir un método de página personalizado o un método de modelo de página, puede combinarlo con el comodín e ignorar la sintaxis.
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
Lo anterior incluirá todos los campos excepto date
junto con $page->authorName()
, en caso de que sea un método de página personalizado o un método de modelo de página.
Descargue los archivos y colóquelos dentro de site/plugins/fuzzy-search
.
La interfaz de línea de comandos de Kirby facilita la instalación del complemento Fuzzy Search:
$ kirby plugin:install pedroborges/kirby-fuzzy-search
La actualización no podría ser más sencilla, simplemente ejecute:
$ kirby plugin:update pedroborges/kirby-fuzzy-search
Puede agregar el complemento Fuzzy Search como un submódulo de 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"
Actualizar es tan fácil como ejecutar algunos comandos.
$ 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
Todos los cambios notables en este proyecto se documentarán en: https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md
El complemento Fuzzy Search es un software de código abierto con licencia MIT.
Copyright © 2017 Pedro Borges [email protected]