- PostgreSQL มีองค์ประกอบที่จำเป็นสำหรับการสร้างเสิร์ชเอนจินในตัว
- องค์ประกอบหลักได้แก่ชนิดข้อมูล
tsvector และ tsquery, ตัวดำเนินการจับคู่ @@, ฟังก์ชันจัดอันดับผลลัพธ์ที่ตรงกัน และชนิดดัชนี GIN
tsvector ใช้เก็บคำศัพท์ที่ผ่านการทำให้เป็นมาตรฐานแล้ว พร้อมตำแหน่งในข้อความต้นฉบับ
tsquery แทนคิวรีที่ผ่านการทำให้เป็นมาตรฐานแล้ว และสามารถใช้ตัวดำเนินการตรรกะเพื่อรวมหลายคำค้นเข้าด้วยกัน
- ชนิดดัชนี GIN ถูกใช้เพื่อให้คิวรี
tsvector มีประสิทธิภาพ
ts_rank และ ts_rank_cd เป็นฟังก์ชันจัดอันดับที่พิจารณาทั้งความถี่ของคำและความใกล้กันของคำ
- สามารถปรับแต่งความเกี่ยวข้องเพื่อปรับผลการค้นหาให้ตรงตามเกณฑ์เฉพาะได้
- สามารถเพิ่มตัวเร่งคะแนนสำหรับตัวเลข วันที่ และค่าที่ต้องตรงเป๊ะลงในคะแนนการจัดอันดับได้
- สามารถกำหนดน้ำหนักให้คอลัมน์เพื่อให้บางคำมีความสำคัญมากกว่าในผลการค้นหา
- การใช้
setweight กับคอลัมน์ชื่อเรื่องจะช่วยเพิ่มอันดับให้ชื่อภาพยนตร์ที่มีคำว่า "jedi"
- PostgreSQL ไม่ได้รองรับ fuzzy search หรือการยอมรับคำพิมพ์ผิดโดยตรง แต่สามารถทำได้ด้วย similarity หรือระยะห่าง Levenshtein
- การค้นหาแบบ faceted search ซึ่งช่วยให้ผู้ใช้จำกัดขอบเขตการค้นหาได้ สามารถนำไปใช้ใน PostgreSQL ได้ด้วยการกำหนดหมวดหมู่หรือใช้อัลกอริทึม
- บทความปิดท้ายด้วยการระบุว่าจะมีการเปรียบเทียบกับ Elasticsearch แบบละเอียดในภาค 2
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News