Kirby용 퍼지 검색 플러그인. 콘텐츠에서 검색어와 대략적으로 일치하는 항목을 찾는 것이 이보다 쉬웠던 적은 없습니다.
이 플러그인은 fuzzget PHP 라이브러리 위에 구축되었습니다.
Kirby 내장 search
방법을 이미 사용하고 있는 경우 이를 퍼지 검색으로 바꾸는 것은 페이지 컬렉션에서 방법의 이름을 바꾸면 됩니다.
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
퍼지 검색은 Kirby 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 ' );
위의 내용에는 사용자 정의 페이지 방법 또는 페이지 모델 방법인 경우 $page->authorName()
과 함께 date
제외한 모든 필드가 포함됩니다.
파일을 다운로드하여 site/plugins/fuzzy-search
안에 넣습니다.
Kirby의 명령줄 인터페이스를 사용하면 Fuzzy Search 플러그인을 쉽게 설치할 수 있습니다.
$ kirby plugin:install pedroborges/kirby-fuzzy-search
업데이트가 이보다 더 쉬울 수는 없습니다. 간단하게 다음을 실행하세요.
$ kirby plugin:update pedroborges/kirby-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에 문서화되어 있습니다.
퍼지 검색 플러그인은 MIT 라이센스에 따라 라이센스가 부여된 오픈 소스 소프트웨어입니다.
저작권 © 2017 페드로 보르헤스 [email protected]