Plugin de pesquisa difusa para Kirby. Procurar correspondências aproximadas de consultas de pesquisa em seu conteúdo nunca foi tão fácil.
Este plugin é construído sobre a biblioteca PHP fuzzget.
Se você já estiver usando o método search
integrado do Kirby, substituí-lo pelo Fuzzy Search é apenas uma questão de renomear um método em uma coleção de páginas:
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
O Fuzzy Search não é compatível com nenhuma das outras opções disponíveis no método search
Kirby.
Com o Fuzzy Search você também pode pesquisar métodos de página personalizados ou modelos de página. Você só precisa incluir o nome do método no ú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 ' );
O Fuzzy Search vem com um método de campo útil que permite pesquisar campos de página que contêm um conjunto de dados, como campos estruturados.
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
O $result
também será um objeto Field
e não apenas um simples array. Dessa forma, você está livre para encadear qualquer método Field
, como toStructure
, yaml
ou isEmpty
, após fazer uma pesquisa.
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
Você também pode usar a função fuzzySearch
para pesquisar em uma matriz de matrizes associativas.
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
Se você deixar de fora o último parâmetro, o Fuzzy Search pesquisará todas as chaves (campos) nos dados fornecidos:
site ()-> index ()-> fuzzySearch ( $ query );
É o mesmo que usar o curinga *
.
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
O Fuzzy Search é muito flexível quando se trata de escolher em quais campos procurar correspondências. Confira as outras opções:
Caso queira buscar um determinado termo apenas nos campos title
e text
, basta passar seus nomes no último parâmetro separados por |
:
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
Isso é açúcar de sintaxe para:
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
Claro que você também pode listar os campos que não deseja pesquisar:
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
O acima é o mesmo que fazer:
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
Neste exemplo, todos os campos serão considerados na busca, exceto author
e date
.
Se precisar incluir um método de página personalizado ou um método de modelo de página, você pode combiná-lo com o curinga e ignorar a sintaxe.
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
O acima incluirá todos os campos, exceto date
juntamente com $page->authorName()
, caso seja um método de página personalizado ou método de modelo de página.
Baixe os arquivos e coloque-os dentro de site/plugins/fuzzy-search
.
A interface de linha de comando do Kirby facilita a instalação do plugin Fuzzy Search:
$ kirby plugin:install pedroborges/kirby-fuzzy-search
A atualização não poderia ser mais fácil, basta executar:
$ kirby plugin:update pedroborges/kirby-fuzzy-search
Você pode adicionar o plugin Fuzzy Search como um submódulo 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"
Atualizar é tão fácil quanto executar alguns 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
Todas as alterações notáveis neste projeto serão documentadas em: https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md
O plugin Fuzzy Search é um software de código aberto licenciado sob a licença MIT.
Copyright © 2017 Pedro Borges [email protected]