Tìm kiếm với gem pg-search
Bài đăng này đã không được cập nhật trong 6 năm
Hiện nay có nhiều Startup rất thành công nhờ khai thác nguồn dữ liệu như hệ thống tìm kiếm địa điểm du lịch Bayo, Vntrip, hệ thống tìm kiếm chăm sóc sức khỏe Vicare, hệ thống đặt phòng AirBnb Đặc trưng cho các sản phẩm đó thường có một ô search rất lớn và tập trung vào chức năng chính đó. Các sản phẩm đó thường là Single Page Application có 3 phần chính: Server cung cấp Api, Client và mô hình kết nối. Hôm trước mình có dự định làm 1 cái ứng dụng web đơn giản để tìm kiếm chùa chiền ở Việt Nam với Ruby on Rails, sử dụng Database là Postgresql và sử dụng React để viết Client. Để viết Api mình có sử dụng 1 gem full text search và thấy khá hay muốn giới thiệu cho mọi người. Đó là gem pg_search.
Hôm nay mình sẽ giới thiệu về cách sử dụng Gem để tìm kiếm một địa điểm Trước tiên cài đặt Gem
gem install pg_search
Hoặc thêm vào gem file
gem 'pg_search'
Sau đó thêm include PgSearch vào model muốn có thể search, chỉ ra các thuộc tính search
class Place < ActiveRecord::Base
belongs_to :user
include PgSearch
pg_search_scope :search, against: [:name, :position, :address]
end
Ở đây, mình tạo một model Địa danh đơn giản với các thuộc tính: name, description, position, address và thử nghiệm gem pg_search để tìm kiếm Sau đó thêm vào config/routes.rb
resources :search, only: [:index]
Bây giờ thêm search field vào giao diện sử dụng input field
<input type=”text” name=”query” id=”query” placeholder=”Nhập tên, địa điểm…”>
Và thêm button submit search
<input type=”submit” name=”commit” value=“Search”>
Bước cuối cùng là thêm vào Controller xử lý request
class SearchController < ApplicationController
def index
if params[:query].present?
places = Place.search(params[:query])
else
@places = Place.all
end
end
end
Vậy là mình vừa thử sử dụng gem pg_search để cài đặt demo một phần tìm kiếm điểm đến đơn giản. Chúc các bạn lập trình vui vẻ!
All rights reserved