สฟิงซ์เป็นเอ็นจิ้นการค้นหาข้อความแบบโอเพ่นซอร์สที่สามารถผนวกรวมเข้ากับเว็บแอปพลิเคชั่นต่าง ๆ เพื่อให้ได้ผลลัพธ์การค้นหาที่รวดเร็วและมีคุณภาพสูง
บทความนี้จะแสดงวิธีการตั้งค่าเครื่องมือค้นหาสฟิงซ์ให้ดัชนีและค้นหาตัวอย่างฐานข้อมูล MariaDB บนอินสแตนซ์เซิร์ฟเวอร์ Vultr CentOS 7 มันจะให้ความคิดเบื้องต้นเกี่ยวกับวิธีการใช้สฟิงซ์ในโครงการของคุณ
ข้อกำหนดเบื้องต้น
- ปรับใช้อินสแตนซ์เซิร์ฟเวอร์ CentOS 7 ใหม่จากแผงควบคุม Vultr
- ใช้ผู้ใช้ที่ไม่ใช่ผู้ใช้ sudo เพื่อล็อกอินจากเทอร์มินัล SSH ของคุณ ดูวิธีการสร้างผู้ใช้ sudo ในบทความนี้
ขั้นตอนที่ 1: อัปเดตระบบของคุณ
sudo yum update -y && sudo reboot
หลังจากระบบรีบูตเสร็จสิ้นให้ใช้ผู้ใช้ sudo คนเดียวกันเพื่อเข้าสู่ระบบอีกครั้ง
สฟิงซ์สามารถใช้ในการค้นหาแหล่งข้อมูลต่าง ๆ เช่นฐานข้อมูล SQL, ไฟล์ข้อความธรรมดา, ไฟล์ HTML ฯลฯ ที่นี่เรามาดูวิธีการใช้สฟิงซ์เพื่อทำการค้นหาบนฐานข้อมูล MariaDB
ติดตั้ง MariaDB โดยใช้ YUM:
sudo yum install mariadb mariadb-server
เริ่มบริการ MariaDB:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
เพื่อความปลอดภัยให้ทำการติดตั้ง MySQL อย่างปลอดภัย:
sudo /usr/bin/mysql_secure_installation
ทำตามขั้นตอนนี้ตามคำแนะนำต่อไปนี้:
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n]: Input Y, then press Enter
New password: Input a new password for root, press Enter
Re-enter new password: Input the same password again, then press Enter
Remove anonymous users? [Y/n]: Input Y, then press Enter
Disallow root login remotely? [Y/n]: Input Y, then press Enter
Remove test database and access to it? [Y/n]: Input Y, then press Enter
Reload privilege tables now? [Y/n]: Input Y, then press Enter
หลังจากการติดตั้ง MySQL ที่ปลอดภัยเสร็จสิ้นคุณจะต้องตั้งรหัสผ่านใหม่สำหรับผู้ใช้ MySQL "root" ในบทช่วยสอนนี้ฉันจะเรียกมันว่า "yourpassword"
ขั้นตอนที่ 3: ติดตั้งสฟิงซ์ล่าสุด
ในการติดตั้ง Sphinx เวอร์ชั่นล่าสุดคุณต้องดาวน์โหลดแพ็คเกจ rpm ที่เหมาะสมจากเว็บไซต์ทางการของ Sphinx:
cd ~
wget http://sphinxsearch.com/files/sphinx-2.2.10-1.rhel7.x86_64.rpm
sudo yum install sphinx-2.2.10-1.rhel7.x86_64.rpm
ขั้นตอนที่ 4: สร้างฐานข้อมูลสำหรับการทดสอบ
ใช้คำสั่ง MySQL ต่อไปนี้เพื่อสร้างฐานข้อมูลชื่อ "test":
mysql -u root -p -e "CREATE DATABASE test"
เมื่อคุณถูกขอให้ระบุรหัสผ่านให้ป้อนรหัสที่คุณตั้งไว้ก่อนหน้านี้แล้วกด Enter
ตอนนี้นำเข้าข้อมูลทดสอบจากไฟล์ sql ตัวอย่าง Sphinx:
mysql -u root -p test < /usr/share/doc/sphinx-2.2.10/example.sql
ป้อนรหัสผ่านเดียวกันอีกครั้งแล้วกด Enter เพื่อสิ้นสุดการนำเข้า
เปิดไฟล์คอนฟิกูเรชัน Sphinx /etc/sphinx/sphinx.conf
:
sudo vi /etc/sphinx/sphinx.conf
ในตอนนี้คุณเพียงแค่ตั้งค่าชื่อผู้ใช้ MySQL sql_user
และรหัสผ่านsql_pass
ซึ่งจะเป็น:
sql_user = root
sql_pass = yourpassword
บันทึกและออก:
:wq
ขั้นตอนที่ 6: เริ่มตัวสร้างดัชนีและ searchd daemons
ทั้งตัวสร้างดัชนีและการค้นหาเป็นองค์ประกอบสำคัญของสฟิงซ์ ตัวจัดทำดัชนีรับผิดชอบการรวบรวมข้อมูลจากแหล่งข้อมูลและ searchd เป็นส่วนหนึ่งของเครื่องมือค้นหาที่จัดการการค้นหาได้จริง
อย่าลืมรันคำสั่งต่อไปนี้อย่างเป็นระเบียบหรือคุณจะพบข้อผิดพลาด
sudo indexer --all
sudo searchd
หากต้องการอัพเดตสถานะดัชนีเป็นประจำให้สร้างงาน cron:
sudo crontab -e
ป้อนรายการต่อไปนี้:
0 * * * * /usr/bin/indexer --rotate --config /etc/sphinx/sphinx.conf --all
บันทึกและออก:
:wq
งาน cron นี้จะอัพเดตสถานะดัชนีทุกชั่วโมง
ขั้นตอนที่ 7: ทดสอบเครื่องมือค้นหาสฟิงซ์ของคุณ
คุณสามารถใช้สคริปต์ python ที่กำหนดไว้ล่วงหน้าเพื่อทดสอบการตั้งค่าสฟิงซ์ของคุณ:
python /usr/share/sphinx/api/test.py this is my test document
คำสั่งนี้จะค้นหา "นี่คือเอกสารทดสอบของฉัน" ในตัวอย่างฐานข้อมูล MySQL แล้วแสดงผลการค้นหา
สรุปว่าบทช่วยสอนนี้ สฟิงซ์ยังมี API การค้นหาซึ่งสามารถใช้ได้จากโครงการ PHP, Perl, Python, Ruby หรือ Java ของคุณเอง ข้อมูลเพิ่มเติมมีอยู่ในเว็บไซต์อย่างเป็นทางการของสฟิงซ์