カービィのあいまい検索プラグイン。コンテンツ内の検索クエリのおおよその一致を探すのが、かつてないほど簡単になりました。
これは、fuzzget PHP ライブラリ上に構築されたプラグインです。
すでに Kirby 組み込みsearch
メソッドを使用している場合は、ページ コレクションのメソッドの名前を変更するだけで、それをファジー検索に置き換えることができます。
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
あいまい検索は、カービィsearch
方法で利用できる他のオプションとは互換性がありません。
あいまい検索を使用すると、カスタム ページ メソッドまたはページ モデルを通じて検索することもできます。 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 ' );
ファジー検索には、構造化フィールドなどのデータ セットを含むページ フィールドを検索できる便利なフィールド メソッドが付属しています。
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
$result
単なる配列ではなく、 Field
オブジェクトでもあります。こうすることで、検索を行った後に、 toStructure
、 yaml
、 isEmpty
などの任意のField
メソッドを自由にチェーンできます。
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
fuzzySearch
関数を使用して、連想配列の配列を検索することもできます。
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
最後のパラメータを省略すると、あいまい検索は指定されたデータ内のすべてのキー (フィールド) を検索します。
site ()-> index ()-> fuzzySearch ( $ query );
*
ワイルドカードを使用するのと同じです。
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
ファジー検索は、一致を検索するフィールドを選択する際に非常に柔軟です。他のオプションを確認してください。
title
とtext
フィールドのみで特定の用語を検索する場合は、その名前を|
で区切った最後のパラメータに渡すだけです。 :
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
それは次のような構文シュガーです。
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
もちろん、検索したくないフィールドをリストすることもできます。
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
上記は次のことを行うのと同じです。
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
この例では、 author
とdate
を除くすべてのフィールドが検索の対象となります。
カスタム ページ メソッドまたはページ モデル メソッドを含める必要がある場合は、ワイルドカードと組み合わせて構文を無視できます。
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
上記には、カスタム ページ メソッドまたはページ モデル メソッドの場合に備えて、 date
と$page->authorName()
を除くすべてのフィールドが含まれます。
ファイルをダウンロードして、 site/plugins/fuzzy-search
内に配置します。
Kirby のコマンド ライン インターフェイスを使用すると、あいまい検索プラグインのインストールが簡単になります。
$ kirby plugin:install pedroborges/kirby-fuzzy-search
更新はこれ以上に簡単です。単に実行するだけです。
$ kirby plugin:update pedroborges/kirby-fuzzy-search
Fuzzy Search プラグインを 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"
更新はいくつかのコマンドを実行するだけで簡単です。
$ 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
このプロジェクトに対する注目すべき変更はすべて、https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md に文書化されます。
Fuzzy Search プラグインは、MIT ライセンスに基づいてライセンス供与されたオープンソース ソフトウェアです。
著作権 © 2017 ペドロ・ボルヘス [email protected]