ปลั๊กอินค้นหาแบบคลุมเครือสำหรับ Kirby การค้นหาการจับคู่โดยประมาณของคำค้นหาในเนื้อหาของคุณไม่เคยง่ายขนาดนี้มาก่อน
ปลั๊กอินนี้สร้างขึ้นจากไลบรารี fuzzget PHP
หากคุณใช้วิธี search
ในตัวของ Kirby อยู่แล้ว การแทนที่ด้วย Fuzzy Search เป็นเพียงเรื่องการเปลี่ยนชื่อวิธีการในคอลเลกชันหน้า:
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
Fuzzy Search เข้ากัน ไม่ ได้กับตัวเลือกอื่นๆ ที่มีอยู่ในวิธี search
Kirby
ด้วย Fuzzy 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 ' );
Fuzzy Search มาพร้อมกับวิธีการฟิลด์ที่สะดวกซึ่งช่วยให้คุณสามารถค้นหาในช่องเพจที่มีชุดข้อมูล เช่น ฟิลด์ที่มีโครงสร้าง
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
$result
จะเป็นวัตถุ Field
และไม่ใช่แค่อาร์เรย์ธรรมดา ด้วยวิธีนี้ คุณจะมีอิสระที่จะโยงวิธี Field
ใดๆ เช่น toStructure
, yaml
หรือ isEmpty
หลังจากทำการค้นหา
$ 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 ' );
หากคุณไม่ใส่พารามิเตอร์ตัวสุดท้าย Fuzzy Search จะค้นหาคีย์ (ฟิลด์) ทั้งหมดในข้อมูลที่ให้ไว้:
site ()-> index ()-> fuzzySearch ( $ query );
มันเหมือนกับการใช้ไวด์การ์ด *
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
Fuzzy Search มีความยืดหยุ่นมากเมื่อต้องเลือกฟิลด์ที่ต้องการค้นหารายการที่ตรงกัน ตรวจสอบตัวเลือกอื่นๆ:
หากคุณต้องการค้นหาคำที่ระบุเฉพาะใน 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 ทำให้การติดตั้งปลั๊กอิน Fuzzy Search เป็นเรื่องง่าย:
$ 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]