Tìm kiếm chính xác hơn cho websiteNguyễn Sơn Tùngnstung@gmail.comTiki Corp
Đặt vấn đề Các giải pháp search phổ biến:      MySQL Like/Fulltext      Lucene based (Lucene, Sphinx, Solr) Chưa suppo...
Overview về MySQL search Like => Backend Fulltext => dùng được, nhưng chưa tốt Peformance => kém
Vấn đề tiếng Việt trong MySQL Roadmap:     2004 Rased lên bởi 1 bug report #4745     2007 Có giải pháp custom charset  ...
Workaround Loại bỏ dấu (removeAccents)     Indexer: Thêm secondary column, set weigh     Search: removeAccents(keyword)...
Search tuning Độ chính xác     Bắt SE hiểu bộ mã tiếng Việt     Kỹ thuật khác hỗ trợ:       Search suggestion        ...
Hiểu đúng bộ ký tự tiếng Việt    Vietnamese collationNguồn: http://vietunicode.sourceforge.net/charset/v3.htm
Một chút về Full-text search Rank (Weight) = f(frequency, sequence)      Frequency: tần suất xuất hiện từ khoá      Seq...
Vấn đề search “đúng” tiếng Việt Quy ước chuyển đổi dấu mang tính tương đối      User gõ không dấu => kết quả có dấu + kh...
Custom charset Greedy search (sequence) bằng custom charset theo quy t ắc d ấu  tiếng Việt   a=à=ả=á=ã=ạ=â=ầ=ẩ=ấ=ẫ= ậ=ă= ...
Custom charset cho MySQL charset/Index.xml Loose charset      utf8_vietnamese_loose_ci Tight charset      utf8_vietna...
Custom charset cho Sphinx Sphinx.conf     charset_type = utf-8     charset_table = 0..9, a..z, _, A..Z->a..z, U+00C0->a, ...
Demo
Kỹ thuật hỗ trợ Search suggestion      Sử dụng popularity      Quick response time (~50ms)
Case-study Tuning search on Tiki.vn Dao động sau 2 tháng:      Visit with search: +33%      Total unique searches: +37...
Upcoming SlideShare
Loading in …5
×

Speaker nguyen son tung search tuning

384 views
322 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
384
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Speaker nguyen son tung search tuning

  1. 1. Tìm kiếm chính xác hơn cho websiteNguyễn Sơn Tùngnstung@gmail.comTiki Corp
  2. 2. Đặt vấn đề Các giải pháp search phổ biến:  MySQL Like/Fulltext  Lucene based (Lucene, Sphinx, Solr) Chưa support hoàn toàn tiếng Việt Developer khắc phục bằng workaround⇒ Tuning để tìm kiếm tốt hơn
  3. 3. Overview về MySQL search Like => Backend Fulltext => dùng được, nhưng chưa tốt Peformance => kém
  4. 4. Vấn đề tiếng Việt trong MySQL Roadmap:  2004 Rased lên bởi 1 bug report #4745  2007 Có giải pháp custom charset  2012 Được hứa đưa vào trong MySQL 5.6 nhưng r5.6.9 vẫn chưa có ⇒ Do it yourself
  5. 5. Workaround Loại bỏ dấu (removeAccents)  Indexer: Thêm secondary column, set weigh  Search: removeAccents(keyword) Mở rộng keyword  Search với nhiều keyword theo từ điển  Performance issue => Bad practice
  6. 6. Search tuning Độ chính xác  Bắt SE hiểu bộ mã tiếng Việt  Kỹ thuật khác hỗ trợ:  Search suggestion  Data-click mining Performance:  Dùng external openSE có performance tốt
  7. 7. Hiểu đúng bộ ký tự tiếng Việt  Vietnamese collationNguồn: http://vietunicode.sourceforge.net/charset/v3.htm
  8. 8. Một chút về Full-text search Rank (Weight) = f(frequency, sequence)  Frequency: tần suất xuất hiện từ khoá  Sequence: thứ tự xuất hiện (longest common string)  Ví dụ Sphinx: SPH_RANK_MATCHANY = sum((word_count+(lcs- 1)*max_lcs)*user_weight)
  9. 9. Vấn đề search “đúng” tiếng Việt Quy ước chuyển đổi dấu mang tính tương đối  User gõ không dấu => kết quả có dấu + không dấu  User gõ có dấu => kết quả có dấu mang ý nghĩ khác  Ví dụ:  Gõ “trang” => “trang”, “trăng”, “trâng”  Gõ “trăng” => “trâng” !!sai nghĩa!!⇒ Giải pháp ⇒ chấp nhận chuyển đổi dấu: lấy frequency tối đa ⇒ correct bằng sequence của SE
  10. 10. Custom charset Greedy search (sequence) bằng custom charset theo quy t ắc d ấu tiếng Việt a=à=ả=á=ã=ạ=â=ầ=ẩ=ấ=ẫ= ậ=ă= ằ= ẳ= ắ= ẵ= ặ Ưu điểm No pre-processing No secondary column Better performance
  11. 11. Custom charset cho MySQL charset/Index.xml Loose charset  utf8_vietnamese_loose_ci Tight charset  utf8_vietnamse_tight_ci
  12. 12. Custom charset cho Sphinx Sphinx.conf charset_type = utf-8 charset_table = 0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1- >a, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, …
  13. 13. Demo
  14. 14. Kỹ thuật hỗ trợ Search suggestion  Sử dụng popularity  Quick response time (~50ms)
  15. 15. Case-study Tuning search on Tiki.vn Dao động sau 2 tháng:  Visit with search: +33%  Total unique searches: +37%(base visits +20%)

×