การติดตั้งและใช้งาน Typesense Search Engine บน ServBay
Typesense คืออินเอนจินค้นหาแบบ open source ที่มีน้ำหนักเบาและรวดเร็วสูงมาก ออกแบบมาเพื่อมอบประสบการณ์ "ค้นหาในขณะพิมพ์" ด้วยเวลาแฝงต่ำ มักถูกใช้งานแทน Algolia หรือ Elasticsearch ในฐานะทางเลือกที่เบากว่า ผ่าน ServBay คุณสามารถติดตั้งและจัดการ Typesense ที่สมบูรณ์บน macOS ของคุณได้อย่างง่ายดาย พร้อมขยายขีดความสามารถการค้นหาให้กับแอปพลิเคชันของคุณ
ภาพรวม
ServBay ช่วยให้การติดตั้งและตั้งค่า Typesense เป็นเรื่องง่ายมาก นักพัฒนาไม่จำเป็นต้องใช้คำสั่ง command line ที่ซับซ้อน สามารถกำหนดค่าทุกอย่างผ่านอินเทอร์เฟซแบบกราฟิก และได้รับบริการค้นหาแบบ local ที่พร้อมใช้งานทันที
เพื่อประสบการณ์ที่ดีที่สุด ServBay จะตั้งค่า endpoint API แบบ HTTPS ที่ปลอดภัยและเข้าถึงง่ายให้คุณโดยอัตโนมัติที่ https://typesense.servbay.host/
ซึ่งหมายความว่าคุณไม่ต้องกังวลเรื่องการแมปพอร์ตหรือใบรับรอง SSL ใช้โดเมนนี้เรียก API ได้ทันทีจากแอปของคุณ
ข้อกำหนดเบื้องต้น
- ระบบ macOS ของคุณได้ติดตั้งและเปิดใช้งาน ServBay เรียบร้อยแล้ว
- คุณกำลังพัฒนาโปรเจกต์ที่ต้องการฟังก์ชันค้นหา
- มีความเข้าใจพื้นฐานเกี่ยวกับเสิร์ชเอนจิน เช่น คอลเลกชัน (Collection), เอกสาร (Document), API Key
ขั้นตอนการใช้งาน
1. ติดตั้งแพ็กเกจ Typesense
เริ่มต้น ให้ติดตั้ง Typesense ใน ServBay ของคุณ:
- เปิดแอป ServBay
- ที่แถบด้านซ้าย คลิกที่ แพ็กเกจ (Packages)
- ค้นหา
ค้นหา
-Typesense
ในรายการแพ็กเกจ - คลิกปุ่มติดตั้งที่ด้านขวาของ
Typesense
แล้วรอจนการติดตั้งเสร็จสมบูรณ์ - กดสวิตช์ทางขวาเพื่อเปิดใช้งานบริการ
Typesense
2. กำหนดค่าบริการ Typesense
เมื่อติดตั้งเสร็จ ให้ตั้งค่าพื้นฐานสำหรับ Typesense ของคุณ:
ในแถบนำทางซ้ายของ ServBay คลิก Search
เลือก Typesense จากเมนูดรอปดาวน์เพื่อเข้าสู่หน้าตั้งค่า
คุณจะเห็นตัวเลือกการตั้งค่าดังต่อไปนี้ สามารถแก้ไขตามต้องการหรือใช้ค่ามาตรฐานเดิมได้:
- Bind IP (ไอพีที่ผูก): ไอพีที่บริการ Typesense จะฟังอยู่ ค่าเริ่มต้น
127.0.0.1
จำกัดการเข้าถึงเฉพาะเครื่องนี้ ปลอดภัยที่สุดสำหรับการพัฒนาในเครื่อง - Port (พอร์ต): พอร์ตการสื่อสาร API หลักของ Typesense ค่าเริ่มต้นคือ
8108
แม้บริการจะเปิดที่พอร์ตนี้ เราขอแนะนำให้เข้าผ่านhttps://typesense.servbay.host
เสมอ - API Key (คีย์ API): กุญแจที่ใช้ตรวจสอบสิทธิ์ API ทุกครั้ง สำคัญมากสำหรับความปลอดภัยของข้อมูลค้นหา ตั้งคีย์ที่แข็งแกร่งและไม่ซ้ำกัน และเก็บรักษาไว้ให้ดี
- Data Path (เส้นทางข้อมูล): ที่เก็บข้อมูลและการตั้งค่าต่างๆ ของ Typesense ในเครื่อง ค่าเริ่มต้นคือ
/Applications/ServBay/data/typesense
คุณสามารถคลิก ไอคอนโฟลเดอร์ ทางขวาเพื่อเปิดตำแหน่งนี้ใน Finder ได้ทันที
- Bind IP (ไอพีที่ผูก): ไอพีที่บริการ Typesense จะฟังอยู่ ค่าเริ่มต้น
3. บันทึกการตั้งค่าและเริ่มบริการ
- เมื่อตั้งค่าทุกอย่างเรียบร้อยแล้ว คลิกปุ่ม Save (บันทึก) ที่มุมขวาล่าง
- สลับมายังรายการ แพ็กเกจ (Packages) ค้นหา
Typesense
แล้วกดสวิตช์ทางขวาเพื่อเปิดบริการ - หากการตั้งค่าถูกต้อง ไฟแสดงสถานะจะขึ้นเป็นสีเขียว แปลว่า Typesense ทำงานสำเร็จแล้ว
4. เชื่อมต่อ Typesense เข้ากับแอปของคุณ
แอปพลิเคชันของคุณ (เช่น JavaScript, PHP, Python, Go ฯลฯ) สามารถเชื่อมต่อกับ Typesense ใน ServBay ได้ผ่าน client library ที่ออกโดยทีมงานหรือชุมชน
ข้อมูลสำหรับเชื่อมต่อควรใช้ค่า endpoint ที่ ServBay จัดเตรียมให้:
- Host/Node (โฮสต์/โหนด):
typesense.servbay.host
- Port (พอร์ต):
443
(มาตรฐานสำหรับ HTTPS) - Protocol (โปรโตคอล):
https
- API Key (คีย์ API): คือ API Key ที่คุณตั้งไว้ในขั้นตอนที่ 2
ตัวอย่างโค้ด JavaScript (ใช้ typesense-js
client)
ติดตั้ง Typesense JavaScript client ก่อน:
bash
npm install typesense
# หรือ
yarn add typesense
1
2
3
2
3
จากนั้น เพิ่มโค้ดต่อไปนี้ในโปรเจกต์ของคุณเพื่อตั้งค่าและใช้งาน client:
javascript
import Typesense from 'typesense'
// เริ่มต้น Typesense client
// ใช้โดเมนและโปรโตคอลที่ปลอดภัยจาก ServBay
const client = new Typesense.Client({
nodes: [{
host: 'typesense.servbay.host',
port: 443,
protocol: 'https'
}],
apiKey: 'YOUR-SUPER-STRONG-API-KEY', // เปลี่ยนเป็น API Key ที่ตั้งไว้ใน ServBay
connectionTimeoutSeconds: 2
})
// ตัวอย่าง: สร้าง collection ชื่อ 'books'
const bookSchema = {
name: 'books',
fields: [
{ name: 'title', type: 'string' },
{ name: 'author', type: 'string', facet: true },
{ name: 'publication_year', type: 'int32', facet: true }
],
default_sorting_field: 'publication_year'
}
async function setupTypesense() {
try {
// สร้าง collection
await client.collections().create(bookSchema);
console.log("Collection 'books' created successfully.");
// เพิ่มเอกสารหนังสือเข้าหนึ่งเล่ม
const bookDocument = {
'title': 'The Hitchhiker\'s Guide to the Galaxy',
'author': 'Douglas Adams',
'publication_year': 1979
};
await client.collections('books').documents().create(bookDocument);
console.log("Document added successfully.");
// ทดลองค้นหา
const searchParameters = {
'q': 'hitchhiker',
'query_by': 'title',
'sort_by': 'publication_year:desc'
};
const searchResults = await client.collections('books').documents().search(searchParameters);
console.log('Search Results:', searchResults);
} catch (error) {
console.error('Typesense Error:', error);
}
}
setupTypesense();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
คำถามพบบ่อย (FAQ)
- ถาม: ลืม API Key ทำอย่างไร?
- ตอบ: รีเซ็ตใน ServBay ได้ง่ายๆ แค่ไปที่หน้าตั้งค่า Typesense (
Search
->Typesense
) ใส่คีย์ใหม่ในช่องAPI Key
แล้วกด Save (บันทึก) จากนั้น รีสตาร์ท บริการ Typesense
- ตอบ: รีเซ็ตใน ServBay ได้ง่ายๆ แค่ไปที่หน้าตั้งค่า Typesense (
- ถาม: เปิดใช้งาน Typesense Service ไม่ได้ มีสาเหตุอะไร?
- ตอบ: ตรวจสอบดังนี้:
- คลิกไอคอน Log ที่มุมขวาบนของหน้าตั้งค่าดูข้อความ error จะเป็นเบาะแสที่ดีที่สุด
- ตรวจสอบว่า
8108
พอร์ตในเครื่องไม่มีแอปอื่นใช้อยู่ - ดูว่าไดเรกทอรี
Data Path
มีอยู่จริง และ ServBay มีสิทธิ์อ่าน/เขียน
- ตอบ: ตรวจสอบดังนี้:
- ถาม: เข้าถึง API ได้โดยตรงผ่าน
http://127.0.0.1:8108
หรือไม่?- ตอบ: ได้ พอร์ตนี้เปิดใช้งานในเครื่องอยู่ แต่ขอแนะนำเชื่อมต่อผ่าน
https://typesense.servbay.host/
เพราะได้ HTTPS โดยไม่ต้องตั้งค่าเพิ่ม ใกล้เคียง production มากกว่าและปลอดภัยกว่า
- ตอบ: ได้ พอร์ตนี้เปิดใช้งานในเครื่องอยู่ แต่ขอแนะนำเชื่อมต่อผ่าน
สรุป
ServBay ทำให้การใช้งาน Typesense Search Engine ทรงพลังกลมกลืนไปกับเวิร์กโฟลว์ใน macOS ของคุณ ด้วยอินเทอร์เฟซที่ใช้งานง่ายและการตั้งค่าความปลอดภัยล่วงหน้า คุณจะใช้เวลากับการสร้างประสบการณ์ค้นหาที่ยอดเยี่ยมมากกว่ามัวกับการติดตั้งและดูแลระบบค้นหาเอง