Fuzzy-Such-Plugin für Kirby. Die Suche nach ungefähren Übereinstimmungen von Suchanfragen in Ihren Inhalten war noch nie so einfach.
Dieses Plugin basiert auf der PHP-Bibliothek fuzzget.
Wenn Sie bereits die integrierte Kirby- search
verwenden, müssen Sie zum Ersetzen durch die Fuzzy-Suche lediglich eine Methode in einer Seitensammlung umbenennen:
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
Die Fuzzy-Suche ist mit keiner der anderen Optionen der Kirby search
kompatibel.
Mit der Fuzzy-Suche können Sie auch benutzerdefinierte Seitenmethoden oder Seitenmodelle durchsuchen. Sie müssen nur den Methodennamen in den letzten Parameter fuzzySearch
aufnehmen.
// 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 ' );
Die Fuzzy-Suche wird mit einer praktischen Feldmethode geliefert, mit der Sie nach Seitenfeldern suchen können, die Datenmengen enthalten, beispielsweise strukturierte Felder.
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
Das $result
ist ebenfalls ein Field
Objekt und nicht nur ein einfaches Array. Auf diese Weise können Sie nach einer Suche beliebige Field
Methoden wie toStructure
, yaml
oder isEmpty
verketten.
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
Sie können die Funktion fuzzySearch
auch verwenden, um ein Array assoziativer Arrays zu durchsuchen.
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
Wenn Sie den letzten Parameter weglassen, durchsucht die Fuzzy-Suche alle Schlüssel (Felder) in den bereitgestellten Daten:
site ()-> index ()-> fuzzySearch ( $ query );
Es ist dasselbe wie die Verwendung des Platzhalters *
.
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
Die Fuzzy-Suche ist sehr flexibel, wenn es darum geht, auszuwählen, in welchen Feldern nach Übereinstimmungen gesucht werden soll. Schauen Sie sich die anderen Optionen an:
Wenn Sie nach einem bestimmten Begriff nur in den title
und text
suchen möchten, übergeben Sie einfach deren Namen im letzten Parameter, getrennt durch |
:
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
Das ist Syntaxzucker für:
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
Natürlich können Sie auch Felder auflisten, die Sie nicht durchsuchen möchten:
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
Das Obige ist dasselbe wie:
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
In diesem Beispiel werden bei der Suche alle Felder außer author
und date
berücksichtigt.
Wenn Sie eine benutzerdefinierte Seitenmethode oder Seitenmodellmethode einschließen müssen, können Sie diese mit dem Platzhalter kombinieren und die Syntax ignorieren.
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
Das Obige umfasst alle Felder außer date
sowie $page->authorName()
, falls es sich um eine benutzerdefinierte Seitenmethode oder Seitenmodellmethode handelt.
Laden Sie die Dateien herunter und platzieren Sie sie in site/plugins/fuzzy-search
.
Kirbys Befehlszeilenschnittstelle macht die Installation des Fuzzy Search-Plugins zum Kinderspiel:
$ kirby plugin:install pedroborges/kirby-fuzzy-search
Das Aktualisieren könnte nicht einfacher sein, führen Sie einfach Folgendes aus:
$ kirby plugin:update pedroborges/kirby-fuzzy-search
Sie können das Fuzzy Search-Plugin als Git-Submodul hinzufügen.
$ 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"
Das Aktualisieren ist so einfach wie das Ausführen einiger Befehle.
$ 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
Alle nennenswerten Änderungen an diesem Projekt werden unter https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md dokumentiert
Das Fuzzy Search-Plugin ist eine Open-Source-Software, die unter der MIT-Lizenz lizenziert ist.
Copyright © 2017 Pedro Borges [email protected]