Plugin pencarian fuzzy untuk Kirby. Mencari perkiraan kecocokan kueri penelusuran di konten Anda tidak pernah semudah ini.
Plugin ini dibangun di atas perpustakaan fuzzget PHP.
Jika Anda sudah menggunakan metode search
bawaan Kirby, menggantinya dengan Pencarian Fuzzy hanyalah masalah mengganti nama metode pada kumpulan halaman:
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
Pencarian Fuzzy tidak kompatibel dengan opsi lain yang tersedia pada metode search
Kirby.
Dengan Pencarian Fuzzy Anda juga dapat mencari melalui metode halaman khusus atau model halaman. Anda hanya perlu memasukkan nama metode pada parameter terakhir 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 ' );
Pencarian Fuzzy dikirimkan dengan metode bidang praktis yang memungkinkan Anda mencari di bidang halaman yang berisi kumpulan data, seperti bidang terstruktur.
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
$result
juga akan berupa objek Field
dan bukan hanya array sederhana. Dengan begitu, Anda bebas menyambungkan metode Field
apa pun, seperti toStructure
, yaml
, atau isEmpty
, setelah melakukan penelusuran.
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
Anda juga dapat menggunakan fungsi fuzzySearch
untuk mencari melalui array array asosiatif.
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
Jika Anda mengabaikan parameter terakhir, Pencarian Fuzzy akan mencari semua kunci (bidang) dalam data yang disediakan:
site ()-> index ()-> fuzzySearch ( $ query );
Ini sama dengan menggunakan wildcard *
.
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
Pencarian Fuzzy sangat fleksibel dalam memilih bidang mana yang harus dicari kecocokannya. Lihat opsi lainnya:
Jika Anda ingin mencari istilah tertentu hanya di kolom title
dan text
, cukup masukkan namanya di parameter terakhir dengan dipisahkan oleh |
:
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
Itu adalah sintaksis gula untuk:
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
Tentu saja Anda juga dapat membuat daftar kolom yang tidak ingin Anda cari:
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
Cara di atas sama dengan melakukan:
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
Dalam contoh ini, semua bidang akan dipertimbangkan dalam pencarian kecuali author
dan date
.
Jika Anda perlu menyertakan metode halaman kustom atau metode model halaman, Anda dapat menggabungkannya dengan wildcard dan sintaks abaikan.
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
Di atas akan mencakup semua bidang kecuali date
bersama dengan $page->authorName()
, jika itu adalah metode halaman khusus atau metode model halaman.
Unduh file dan letakkan di dalam site/plugins/fuzzy-search
.
Antarmuka baris perintah Kirby membuat instalasi plugin Fuzzy Search menjadi mudah:
$ kirby plugin:install pedroborges/kirby-fuzzy-search
Memperbarui sangat mudah, cukup jalankan:
$ kirby plugin:update pedroborges/kirby-fuzzy-search
Anda dapat menambahkan plugin Fuzzy Search sebagai submodul 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"
Memperbarui semudah menjalankan beberapa perintah.
$ 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
Semua perubahan penting pada proyek ini akan didokumentasikan di: https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md
Plugin Fuzzy Search adalah perangkat lunak sumber terbuka yang dilisensikan di bawah lisensi MIT.
Hak Cipta © 2017 Pedro Borges [email protected]