Cải thiện tính năng tìm kiếm trên WordPress

Cải thiện tính năng tìm kiếm trên WordPress

Nếu bạn đã từng làm việc trên WordPress với hằng hà sa số các trang và bài đăng khác nhau, có lẽ bạn đã nhận ra điều này: tính năng tìm kiếm của WordPress hoạt động không hề tốt. Trong bài viết sau, hãy cùng đi sâu tìm hiểu lý do tại sao chức năng tìm kiếm mặc định của WordPress lại không đạt yêu cầu, và một số cách để cải thiện điều đó.

WordPress tìm kiếm như thế nào?

Tính năng tìm kiếm của WordPress được mặc định để thực hiện một truy vấn (query) trên cơ sở dữ liệu như sau:

A native WordPress database search query

Để phân tích truy vấn này:

  • Đầu tiên, ta đang dùng SQL_CALC_FOUND_ROWS trên bảng wp_posts. Điều này thể hiện, nếu không có giới hạn (đến sau), truy vấn tiếp đó sẽ xuất hiện bao nhiêu kết quả?
  • Rồi ta tìm kiếm từ khóa (trong ví dụ này là từ “tech”) ở cột post_title, post_excerpt và post_content.
  • Phải đảm bảo nội dung kết quả trả về là một bài đăng, một trang, hoặc một tệp đính kèm (media).
  • Kiểm tra đảm bảo trạng thái của kết quả là “công khai” (Public) – không phải riêng tư hay đã bị xóa (nếu bạn là người dùng đã đăng nhập, các bài đăng riêng tư của bạn cũng sẽ được tìm kiếm qua).
  • Sắp xếp kết quả theo độ trùng khớp tiêu đề giảm dần, hoặc ngày đăng giảm dần.
  • Cuối cùng, giới hạn số lượng kết quả hiển thị tối đa là 10, phân trang những kết quả còn lại.

WordPress chạy rất nhiều lần kiểm tra như vậy chỉ để đưa ra được kết quả tìm kiếm. Mỗi lần kiểm tra thông qua wp_posts, MySQL lại xử lý tất cả các dòng trong bảng wp_posts. Nếu nó có hàng trăm hay hàng nghìn dòng, cả quá trình truy vấn sẽ tệ đi rất nhiều. Sau khi thử đối chiếu một vài trang với nhau, ta được kết quả như thế này:

Bar graph showing query times per number of posts

Trên các trang có số bài đăng rất lớn, quá trình truy vấn mất đến hơn 20 giây, hoàn toàn không đạt yêu cầu với các trang có lưu lượng truy cập cao.

Xác định vấn đề

Với những gì ta đã biết về cách mà chức năng tìm kiếm mặc định này hoạt động, hãy cùng xác định tại sao đây lại không phải là lựa chọn lý tưởng cho một số trang web:

  • WordPress chỉ tìm kiếm từ khóa trong “post_title,” “post_content,” và “post_excerpt”. Nó chỉ hiện các kết quả dưới dạng “bài đăng”, “trang” và “tệp đính kèm”. Với các bài đăng được tùy chỉnh (custom), hay sử dụng các plugin như WooCommerce để thêm các dạng trang/bài đăng khác, đây lại là cả một vấn đề: chúng sẽ không xuất hiện trong mục kết quả tìm kiếm.
  • Tính năng tìm kiếm mặc định của WordPress thực hiện truy vấn rất chậm khi phải làm việc với hơn 100.000 bài đăng. Tìm kiếm ở các trang thông tin hay trang truyền thông với hơn 100,000 bài đăng có thể mất đến vài giây.
  • Truy vấn tìm kiếm với hiệu suất kém có thể gây ra nhiều vấn đề nếu trang này có lưu lượng tìm kiếm lớn.

Cải thiện việc tìm kiếm trên WordPress

Giờ ta đã biết tính năng tìm kiếm mặc định của WordPress không phải sự lựa chọn tốt cho rất nhiều trang, hãy cùng tìm hiểu các giải pháp tìm kiếm khác. Dựa vào các vấn đề đã được xác định bên trên, một giải pháp tìm kiếm khả thi phải đạt được các tiêu chuẩn sau:

  • Công cụ tìm kiếm phải tìm kiếm tất cả các nội dung, kể cả nội dung đã được tùy chỉnh, không giới hạn dạng hay phạm vi bài đăng mặc định.
  • Công cụ tìm kiếm phải hoạt động tốt cả với một lượng lớn dữ liệu.
  • Công cụ tìm kiếm phải không làm giảm hiệu suất khi có lưu lượng truy cập cao.

Dưới đây là một vài giải pháp, bao gồm cả các dịch vụ bên ngoài cấp doanh nghiệp và các plugin cho WordPress.

Algolia Search

Algolia là một giải pháp tìm kiếm cấp doanh nghiệp; nó thu thập và chỉ mục dữ liệu ngoại vi các bài đăng và nội dung, rồi trả kết quả tìm kiếm. Bộ tính năng của nó bao gồm tìm kiếm “mờ” (xấp xỉ), tìm kiếm vị trí địa lý, hỗ trợ đa ngôn ngữ, và tìm kiếm với từ đồng nghĩa. Các lợi ích của Algolia trở nên rõ ràng khi được so sánh hiệu suất trên một trang với hàng nghìn bài đăng. Dưới đây là hiệu suất của chức năng tìm kiếm mặc định của WordPress:

DevTool view of the default WordPress search performance

Chức năng tìm kiếm mặc định của WordPress mất 7,43 giây. Tuy nhiên khi sử dụng Algolia, ta được kết quả gần như là ngay lập tức:

DevTool view of Algolia search performance

Tìm kiếm Algolia nhanh hơn tìm kiếm WordPress khoảng 15 lần! Đó là một cải tiến lớn về hiệu suất. Chưa kể, nếu một trang phải hỗ trợ lưu lượng truy cập lớn với các tìm kiếm đồng thời, nó sẽ không là quá sức đối với máy chủ. Giảm tải công việc đến một dịch vụ bên ngoài, một dịch vụ được tối ưu hóa để tìm kiếm, là bước cải tiến lớn.

Elasticsearch

ElasticPress là một sản phẩm của Elastic, giúp chia công việc tìm kiếm đến phiên bản máy chủ Elasticsearch của riêng bạn. Công cụ tìm kiếm này độc đáo ở chỗ bạn có thể chọn nơi đặt máy chủ Elasticsearch: máy tính để bàn cục bộ, máy chủ chuyên dụng, hay thậm chí là trên cùng một máy chủ với trang web WordPress của bạn. Với plugin ElasticPress, bạn có thể dễ dàng kết nối công cụ này với trang web của bạn để sử dụng.

ElasticPress + ElasticSearch là một sự kết hợp hoàn hảo, cung cấp các tính năng tuyệt vời như:

  • Bao gồm cả các sản phẩm từ WooCommerce trong kết quả tìm kiếm
  • Hiển thị bài viết liên quan mà không cần các truy vấn phức tạp, mất thời gian
  • Được tùy chọn thu thập và chỉ mục tất cả, một số, hoặc chỉ các nội dung trên trang web của bạn
  • Tự động đưa ra các đề xuất tìm kiếm khi người dùng đang nhập

Vì ta đang giảm tải công việc đến một dịch vụ bên ngoài được tối ưu hóa để tìm kiếm, hiệu suất ở các trang với hàng nghìn bài đăng cũng được tăng cường.

Amazon CloudSearch

 

Dịch vụ CloudSearch của Amazon, xét về cả sức mạnh, hiệu suất và khả năng mở rộng, là một lựa chọn hoàn toàn khả thi. Amazon sử dụng dịch vụ thanh toán trả trước, biến CloudSearch thành một giải pháp cấp doanh nghiệp không hề tốn kém. Bạn cũng có thể học cách tự chọn các phần sẽ được thu thập và chỉ mục dữ liệu trong quá trình cài đặt, nhưng tốc độ lĩnh hội của bạn phải rất nhanh.

CloudSearch

Một số nhà phát triển đã tạo ra các plugin cho WordPress tích hợp cả CloudSearch, nhưng chúng không được sử dụng rộng rãi hay cập nhật thường xuyên, và cũng có thể là không đáng tin cậy. Điều này có nghĩa là có lẽ bạn sẽ phải tự phát triển phần mềm plugin Amazon CloudSearch của riêng mình. Bạn có thể tham khảo cách thực hiện trong “Hướng dẫn cho Nhà phát triển” của CloudSearch.

Relevanssi

Relevanssi

Relevanssi là một plugin cho WordPress giúp tối ưu hóa tính năng tìm kiếm mặc định “trong nhà”. Nghĩa là, nó tìm kiếm ngay trong cơ sở dữ liệu của chính bạn, ngay trên máy chủ của chính bạn, chỉ là với các kết quả tìm kiếm tốt hơn. Một số lợi ích chính mà plugin này mang lại so với chức năng tìm kiếm mặc định của WordPress là:

  • Cho phép tìm kiếm xấp xỉ
  • Sắp xếp theo mức độ liên quan, không phải theo ngày đăng
  • Được chọn xem kết quả sẽ khớp tất cả các từ, hay chỉ một từ trong số đó
  • Tìm kiếm tất cả nội dung, gồm bình luận, danh mục, gắn thẻ và phần đã được tùy chỉnh

Một khía cạnh mà Relevanssi đã không có nhiều cải tiến là tốc độ và khả năng mở rộng của chức năng tìm kiếm. Theo cách này, Relevanssi là lựa chọn lý tưởng cho những ai đã quá thất vọng với hiệu quả tìm kiếm của WordPress, và không hoàn toàn là lý tưởng cho những ai đang tìm cách cải tiến hiệu suất cho chức năng này.

SearchWP

Giải pháp cuối cùng nhưng cũng không kém phần quan trọng là SearchWP, một plugin tìm kiếm có mất phí. Giống như Relevanssi, nó mở rộng tìm kiếm để bao quát các kết quả tốt hơn, nhưng không đảm bảo sẽ có hiệu suất cao hơn. SearchWP có các tùy chọn cấu hình mở rộng để bao gồm chính xác những gì bạn muốn trong phần kết quả tìm kiếm: sản phẩm thương mại điện tử, truyền thông, file PDF, các bài đăng được tùy chỉnh, các danh mục, gắn thẻ, đoạn mã ngắn (shortcode).

Ngoài các véc-tơ tìm kiếm bổ sung, SearchWP còn cung cấp tính năng tìm kiếm bằng từ khóa gốc. Nếu người dùng tìm kiếm một từ khóa nào đó, họ sẽ nhận được kết quả gồm cả các nội dung với từ khóa liên quan (chung gốc từ). Hơn nữa, SearchWP còn lưu lại lịch sử tìm kiếm và cung cấp cho ta cái nhìn chuyên sâu về lưu lượng tìm kiếm. Điều này sẽ giúp bạn cải thiện chiến lược, khiến nội dung được truy cập và tìm kiếm dễ dàng hơn.

Lựa chọn giải pháp tìm kiếm nào?

Cuối cùng, giải pháp tìm kiếm phù hợp sẽ phải phụ thuộc vào ngân sách và ưu tiên của bạn. Nếu cải tiến hiệu suất là mối quan tâm lớn nhất, hãy chọn Algolia hoặc Elasticsearch. Tuy nhiên, nếu bạn chỉ muốn có các kết quả tìm kiếm tốt hơn, thì Relevanssi và SearchWP là hai lựa chọn đơn giản mà cực kỳ hiệu quả. Còn nếu bạn đang tìm một plugin kinh tế nhất để có thể hoàn toàn tùy chỉnh tính năng tìm kiếm của trang web, CloudSearch của Amazon là lựa chọn tuyệt vời.

Hãy dựa vào các mô tả ở trên để xác định các ưu tiên của bạn, rồi đi tìm giải pháp phù hợp để đáp ứng các nhu cầu đó. Chú ý rằng, phải luôn chạy bất kỳ phần mềm tích hợp hay plugin nào trong môi trường thử nghiệm trước tiên. Điều này cho phép bạn tự do kiểm tra tính năng tìm kiếm mới mà không làm ảnh hưởng đến người dùng.