P-Search เป็นเครื่องมือ EMACS ในการค้นหาสิ่งต่าง ๆ มันรวมแนวคิดจากทฤษฎีการดึงข้อมูลและทฤษฎีการค้นหาแบบเบย์เพื่อช่วยเหลือผู้ใช้ในการค้นหาเอกสาร
การค้นหาบูลีน (เช่นเอกสารมีคำว่า "x") ในขณะที่ง่ายและมีประโยชน์จากนั้นไม่ตรงกับความเชื่อก่อนหน้าของผู้ค้นหาเกี่ยวกับตำแหน่งที่ไฟล์ที่เกี่ยวข้องอยู่ บ่อยครั้งที่ผู้ค้นหามีแนวคิดเฉพาะเกี่ยวกับตำแหน่งที่อยู่ในเอกสาร เช่นเดียวกับไฟล์ประเภทใดที่เขียนเอกสารเมื่อเอกสารถูกสร้างขึ้น ผู้ค้นหามักจะไม่มั่นใจอย่างเต็มที่ว่าข้อกำหนดของ Seach จะปรากฏขึ้นหรือไม่

จนกว่า P-Search จะพร้อมใช้งานบน ELPA/Melpa คุณจะต้องติดตั้งแพ็คเกจนี้ด้วยตนเอง การพึ่งพา P-Search เพียงอย่างเดียวคือกอง
ใช้ quelpa:
(quelpa ' (p-search :repo " zkry/p-search " :fetcher github))ใช้ตรง:
( use-package p-search :straight ( :host github :repo " https://github.com/zkry/p-search.git " ))ใช้ elpaca:
( use-package p-search :elpaca ( :host github :repo " https://github.com/zkry/p-search.git " )) เซสชันการค้นหาสามารถเริ่มต้นด้วยคำสั่ง p-search คำสั่งจะตั้งค่าเซสชันเพื่อค้นหาไฟล์ในไดเรกทอรีโครงการ (ดู Project.el) หากมีโครงการหรือไดเรกทอรีปัจจุบัน ดำเนินการ p-search ด้วยคำนำหน้า Cu เพื่อยกตัวอย่างเซสชันที่ว่างเปล่า (สิ่งที่ต้องทำ)
เซสชัน P-Search ประกอบด้วยสามส่วนหลัก: เครื่องกำเนิดไฟฟ้าผู้สมัครนักบวชและผลการค้นหา

เครื่องกำเนิดไฟฟ้าผู้สมัครเป็นส่วนหนึ่งของเซสชันการค้นหาที่ระบุผู้สมัครค้นหาที่เป็นไปได้ทั้งหมด ตัวเลือกการค้นหาเป็นเอนทิตีที่มีชุดของคุณสมบัติคีย์/ค่า 'content และ 'title เป็น mandetory คุณสมบัติอื่น ๆ อาจมีอยู่ซึ่งจะช่วยให้คุณสามารถใช้ฟังก์ชั่นก่อนหน้านี้ได้ ในเซสชัน P-Search เรียกใช้ p-search-add-candidate-generator ( C ) เพื่อเพิ่มเครื่องกำเนิดไฟฟ้าใหม่
คุณสามารถลบก่อนหน้าด้วยคำสั่ง p-search-kill-entry-at-point
ส่วน Priors เป็นส่วนที่คุณเพิ่มเกณฑ์การค้นหาในเซสชันของคุณ เรียกใช้ p-search-add-prior ( P ) เพื่อเพิ่มฟังก์ชั่นก่อนหน้า
ก่อนอื่นคุณต้องเลือกประเภทของก่อนที่คุณต้องการเพิ่ม จากนั้นคุณจะต้องกำหนดค่าก่อนหน้า ก่อนอื่นจะแจ้งให้คุณทราบสำหรับฟิลด์ใด ๆ ที่เป็น mandetory
หลังจากนั้นเมนูชั่วคราวใหม่จะปรากฏขึ้นเพื่อให้คุณกำหนดค่าก่อนหน้านี้ แต่ละฟังก์ชั่นก่อนหน้านี้จะมีชุดอินพุตและตัวเลือกของตัวเอง แต่แต่ละฟังก์ชั่นจะช่วยให้คุณตั้งค่า ความสำคัญ และควรใช้ ส่วนประกอบ หรือไม่
คุณสามารถลบก่อนหน้าด้วยคำสั่ง p-search-kill-entry-at-point ( k )
เอกสารผู้สมัครแต่ละคนจะได้รับคะแนนจากแต่ละฟังก์ชั่นก่อนหน้านี้ขึ้นอยู่กับว่าฟังก์ชั่นก่อนหน้านี้ตรงกับความดีเพียงใด
ตัวอย่างเช่นสมมติว่าคุณมีการค้นหาข้อความค้นหา แบบสอบถามจะจัดอันดับเอกสารแต่ละฉบับในระดับตั้งแต่ 0 ถึง 1 คะแนนนี้จะถูกแก้ไขโดยความสำคัญ หากคุณกำหนดความสำคัญสูงความน่าจะเป็นจะถูกผลักไปที่สุดขั้ว ความสำคัญต่ำผลักความน่าจะเป็นไปที่ 0.5 ซึ่งจะช่วยลดผลกระทบ
ตัวอย่างเช่นหากข้อความค้นหาข้อความทำเครื่องหมายเอกสารว่ามีความเกี่ยวข้องสูง 0.7 แต่ได้รับความสำคัญต่ำความน่าจะเป็นของมันอาจถูกปรับเปลี่ยนเป็น 0.55 ซึ่งจะช่วยลดผลกระทบ ในทางกลับกันหากข้อความค้นหาที่ตรงกับคะแนน 0.3 แต่ความสำคัญของมันอยู่ในระดับต่ำความน่าจะเป็นของมันจะเพิ่มขึ้นเป็น 0.45
[ตัวสร้างผู้สมัคร] - - [prior_x] [prior_y] - | -doc_a-> entualance_x (score_x_a) ✖ entualance_y (score_y_a) - | -doc_b-> entualance_x (score_x_b) ✖ความสำคัญ _y (score_y_b) ... - --- doc_c-> entualance_x (score_x_c) ✖ entualance_y (score_y_c)
การค้นหาข้อความเป็นองค์ประกอบที่โดดเด่นใน P-Search ในขณะที่การค้นหาข้อความทำหน้าที่เหมือนกับฟังก์ชั่นก่อนหน้าอื่น ๆ (ส่งผลให้คะแนน 0 ถึง 1) mecahnisms ที่อยู่เบื้องหลังนั้นซับซ้อนกว่า
คุณสามารถสร้างแบบสอบถามข้อความได้โดยเลือก“ ข้อความค้นหา” ในเมนูชั่วคราวเมื่อเรียกใช้ p-search-add-prior
จากนั้นคุณจะได้รับแจ้งสำหรับการสืบค้นของคุณ จะสร้างกระบวนการอย่างน้อยหนึ่งกระบวนการขึ้นไปเพื่อทำการค้นหา
ดังที่ได้กล่าวไว้ก่อนหน้านี้เอกสารผู้สมัครการค้นหาแต่ละรายการมี 'content คุณสมบัติ การค้นหาข้อความดำเนินการในฟิลด์นี้ ในขณะที่คุณสามารถสร้างภูมิคุ้มกันได้การค้นหาเอกสารแต่ละฉบับในเธรด Emacs Lisp เดียวนั้นช้าดังนั้นฟังก์ชั่นเครื่องกำเนิดไฟฟ้าของผู้สมัครแต่ละคนสามารถมีวิธีการที่เร็วกว่าในการค้นหา นี่คือเหตุผลที่คุณเห็นเครื่องมือค้นหาเช่น :grep หรือ :rg บนเครื่องกำเนิดไฟฟ้าผู้สมัครระบบไฟล์ เมื่อทำการสืบค้นข้อความบนเอกสารที่มาจากสิ่งนี้มันจะพึ่งพาเครื่องมือนี้ในการดำเนินการค้นหา
สำหรับการสืบค้นข้อความผลการค้นหาแต่ละครั้งจะแยกพื้นที่ ดังนั้นหากคุณพิมพ์ teacher student school จะทำการค้นหาสามครั้งสำหรับสามคำ แต่ละเทอมจะสร้างคะแนนของตัวเองสำหรับแต่ละเอกสารและพวกเขาจะถูกรวมเข้าด้วยกันเพื่อสร้างคะแนนสุดท้าย คุณสามารถใช้คำพูดกับคำศัพท์กลุ่มเพื่อค้นหาบางสิ่งบางอย่างโดยรวมดังนั้น "teacher student school" จะทำการค้นหาหนึ่งคำด้วยคำในลำดับ
ข้อกำหนดที่ไม่ได้เสนอราคาจะถูกประมวลผลเป็นหลายตัวแปรและค้นหาแบบขนาน ตัวอย่างเช่น teacherStudentSchool จะค้นหาทั้ง“ TeacherStudentschool” (กรณีที่ไม่รู้สึก) แต่ยัง“ Teacher_student_school”,“ ครูนักเรียนนักเรียน” (ด้วยคะแนนต่ำกว่า)
คุณสามารถเพิ่มวาระด้วย ^ เพื่อให้ teacher student^ school จะให้การสนับสนุนนักเรียน นอกจากนี้คุณยังสามารถระบุการเพิ่มตัวเลขเช่นเดียวกับใน teacher student^2 school^3
คุณสามารถค้นหาคำศัพท์ที่เกิดขึ้นใกล้กันด้วย (term1 term2 ...)~ ไวยากรณ์ ขึ้นอยู่กับค่าของ p-search-default-near-line-length รายการจะต้องอยู่ในจำนวนบรรทัดที่แน่นอนจากกัน
P-Search จะแสดงค่า p-search-top-n ครั้งแรกของผลการค้นหาเท่านั้น หากคุณไม่เห็นผลลัพธ์ที่เกี่ยวข้องคุณอาจต้องการพิจารณาเพิ่มเกณฑ์การค้นหา นอกจากนี้คุณยังสามารถเรียกใช้คำสั่ง p-search-observe เพื่อลดความน่าจะเป็นของผลลัพธ์ที่เฉพาะเจาะจง การทำเช่นนี้จะลดความน่าจะเป็นของรายการโดยการคูณด้วย 0.3 ด้วยคำนำหน้า Cu p-search-observe คุณสามารถระบุความน่าจะเป็น หลังจากที่คุณทำการสังเกตความน่าจะเป็นจะถูกคำนวณใหม่และผลลัพธ์จะอัปเดต
p-search-peruse-mode เป็นโหมดผู้เยาว์ทั่วโลกทดลองซึ่งเมื่อใช้งานจะติดตามเปอร์เซ็นต์ของไฟล์ที่คุณดู เปอร์เซ็นต์การดูจะได้รับการอัปเดตในส่วนผลการค้นหา
P-Search มีกลไกจำนวนหนึ่งเพื่อเร่งกระบวนการค้นหาของคุณ ในอีกด้านหนึ่งคุณสามารถสร้างคำสั่งและเรียกฟังก์ชั่น P-Search ต่างๆเพื่อยกตัวอย่างเซสชันตามความชอบของคุณ ในอีกด้านหนึ่งเพียงแค่คั่นหน้าเซสชันโดยใช้คำสั่ง bookmark-set (โดยปกติจะถูกผูกไว้กับ Cx rm ) จะช่วยให้คุณบันทึกเซสชันเครื่องกำเนิดไฟฟ้าและนักบวชผู้สมัครและนักบวชเพื่อเข้าถึงได้อย่างรวดเร็วในอนาคต
อีกวิธีหนึ่งในการกำหนดค่าพฤติกรรมของ P-Search คือการตั้งค่าตัวแปร p-search-default-command-behavior โดย setitng เป็นค่าทั่วโลกคุณสามารถกำหนดค่าวิธีการที่คำสั่ง p-search ทำงาน นอกจากนี้คุณยังสามารถตั้งค่าตัวแปรผ่านไฟล์“. dir-locals.el” ได้ดังนี้เพื่อให้มีการตั้งค่าไดเรกทอรีท้องถิ่น:
((p-search-mode . ((p-search-default-command-behavior . ( :candidate-generator p-search-candidate-generator-filesystem :args ((base-directory . " ~/dev/ go/delve/cmd " ))))))) คุณสามารถเรียกใช้คำสั่ง p-search-show-session-preset เพื่อดูเซสชันปัจจุบันที่แสดงเป็นวัตถุ LISP ด้วยการส่งผ่านโครงสร้างข้อมูลนี้ไปยังฟังก์ชัน p-search-setup-buffer คุณสามารถสร้างเซสชัน P-Search ที่คุณต้องการโดยใช้โปรแกรม