1 / 34

Lucene

Lucene. Thực hiện: Võ Thị Kim Sa – Phan Đức Nghĩa. Lucene. Analysis. 1. Analyzer. 2. Stemming Analysis. 3. 4. Synonym. Analysis. Khái niệm: Là quá trình tạo ra Token để chuẩn bị index Mỗi Token được ghi vào Index gọi là Term Cấu trúc Token : Text value Start, end offset

mareo
Download Presentation

Lucene

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lucene Thực hiện: Võ Thị Kim Sa – Phan Đức Nghĩa

  2. Lucene Analysis 1 Analyzer 2 Stemming Analysis 3 4 Synonym

  3. Analysis • Khái niệm: • Là quá trình tạo ra Token để chuẩn bị index • Mỗi Token được ghi vào Index gọi là Term • Cấu trúc Token: • Text value • Start, end offset • Token type: kiểu String mặc định là “word” • Position increment • Term: chỉ position increment của Token được giữ lại khi ghi vào Index trở thành Term

  4. Analysis • Start end offset trong Token để làm gì? • Giúp việc highlight kết quả tìm kiếm, xác định được vị trí bắt đầu và kết thúc của việc highlight một từ • Đưa từ muốn tìm hiển thị trong kết quả tìm kiếm

  5. Analysis • Ví dụ: phân tích Field chứa “the quick brown fox”

  6. Analysis • Position increment: thể hiện sự mối liên hệ giữa một token với token trước đó • Token hơn token trước đó 1: đứng liền sau trong đoạn được phân tích • Token hơn token trước đó từ 1 trở lên: có từ đã bị loại bỏ

  7. Analysis • Token bằng token trước đó: dùng trong trường hợp được đặt lại tên, thêm từ đồng nghĩa, gần nghĩa (alias) • Ví dụ:

  8. Analysis • TokenStream: tập hợp các Token

  9. Analysis • Tokenizer: • chịu trách nhiệm chuyển text thành các Token • được sử dụng đầu tiên trong quá trình Analysis • Input là Reader (một class để đọc các chuỗi ký tự, thuộc thư viện java.io.Reader) • TokenFilter: • Gắn kết các TokenStream • Biến đổi các TokenStream được đưa vào TokenFilter

  10. Analysis • Các thao tác thông thường của TokenFilter: • Loại bỏ Stopword • Chuyển sang dạng lowercase • Đưa về dạng nguyên bản (“stem”). Ví dụ: Wi-Fi -> Wi Fi • Thêm từ đồng nghĩa, gần nghĩa. Ví dụ: “quick” có từ đồng nghĩa: “fast”, “rapid”

  11. Lucene Analysis 1 Analyzer 2 Stemming Analysis 3 4 Synonym

  12. Analyzer • Analyzer: tạo ra một TokenStream • Subclass cơ bản: • WhitespaceAnalyzer: chuyển input thành Token dựa trên khoảng trắng • SimpleAnalyzer: chuyển input thành lowercase. Ví dụ: TpHcm => tphcm • StopAnalyzer: chuyển input thành lowercase đồng thời loại bỏ stopword • StandardAnalyzer: chuyển input thành lowercase, loại bỏ stopword, và những thao tác loại bỏ khác như: loại bỏ dấu nháy, dấu chấm khỏi từ viết tắt. Ví dụ: “T.L.A” => “TLA”

  13. Analyzer • Ví dụ 1: "The quick brown fox jumped over the lazy dogs" • WhitespaceAnalyzer: [The] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] • SimpleAnalyzer: [the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] • StopAnalyzer:[quick] [brown] [fox] [jumped] [over] [lazy] [dogs] • StandardAnalyzer:[quick] [brown] [fox] [jumped] [over] [lazy] [dogs]

  14. Analyzer • Ví dụ 2: "XY&Z Corporation - xyz@example.com“ • WhitespaceAnalyzer: [XY&Z] [Corporation] [-] [xyz@example.com] • SimpleAnalyzer: [xy] [z] [corporation] [xyz] [example] [com] • StopAnalyzer: [xy] [z] [corporation] [xyz] [example] [com] • StandardAnalyzer: [xy&z] [corporation] [xyz@example.com]

  15. Analyzer Language Tính năng bổ sung N- gram Payload

  16. Analyzer • Languages: chứa mã code UTF-8 • Non – English language: GermanAnalyzer, RussianAnalyzer • Asian language: tiếng Nhật, tiếng Hoa, tiếng Hàng… dùng CJKAnalyzer, ChineseAnalyzer

  17. Analyzer • N - gram: nhóm một phần của “tiếng” thành những Token riêng biệt • Ví dụ: 2 – gram của “lucene”: Lu, uc, ce, en, ne • Giúp cho việc tìm kiếm trở nên dễ dàng hơn khi dữ liệu quá phức tạp hoặc khó tokenize

  18. Analyzer • Payload: cho phép thêm một mảng dữ liệu binary vào bất kỳ Term trên Index

  19. Lucene Analysis 1 Analyzer 2 Stemming Analysis 3 4 Synonym

  20. Stemming Analysis • Stemming Analysis: là phương pháp đưa các từ về dạng nguyên bản • Ví dụ: “breathe”, “breathes”, “breathing”, “breathed” sẽ được đưa về thành “breath” • Có nhiều phương pháp Stemming Analysis như: Porter stemmer, Snowball (phương pháp stemming Analysis hỗ trợ nhiều ngôn ngữ), Kstem

  21. Lucene Analysis 1 Analyzer 2 Stemming Analysis 3 4 Synonym

  22. Synonym • Synonym: phương pháp tạo ra các từ đồng nghĩa, gần nghĩa với từ gốc • Được đặt cùng vị trí position increment với từ gốc • Giúp tìm ra những Document không chứa từ muốn tìm nhưng chứa những từ đồng nghĩa, gần nghĩa với từ muốn tìm • Class sử dụng: SynonymAnalyzer, SynonymFilter

  23. Synonym

  24. Highlight • Highlight query term: • cho phép người dùng thấy được những từ muốn tìm ở kết quả tìm kiếm bằng cách làm nổi bật các từ đó

  25. Highlight • Cách thức highlight: String text= "The quick brown fox jumps over the lazy dog"; TermQuery query = new TermQuery(new Term("field", "fox")); Scorer scorer = new QueryScorer(query); Highlighter highlighter = new Highlighter(scorer); TokenStream tokenStream = new SimpleAnalyzer().tokenStream("field", new StringReader(text)); System.out.println(highlighter.getBestFragment(tokenStream, text)); => Kết quả: The quick brown <B>fox</B> jumps over the lazy dog

  26. Highlight • Analyzer đọctext, trả về một tokenStream (kiểu TokenStream) String text= "The quick brown fox jumps over the lazy dog"; TokenStream tokenStream = new SimpleAnalyzer().tokenStream("field“,new StringReader(text)); TermQuery query = new TermQuery(new Term("field", "fox")); • Để có thể highlight, term trong query phải giống với Token trong tokenStream

  27. Analysis • Những từ giống nhau của query và tokenStream trở thành từ để highlight • Mỗi Token trong TokenStream chứa position, offset (dùng để highlight) • Highlighter chia nhỏ từ để highlight thành các fragment (mảnh) có kích thước bằng nhau, mặc định là 100 ký tự, dùng lớp Fragmenter Scorer scorer = new QueryScorer(query); Highlighter highlighter = new Highlighter(scorer); System.out.println(highlighter.getBestFragment(tokenStream, text));

  28. Highlight • Nhiệm vụ chính của Scorer là sắp xếp (rank) các fragment • QueryScore sẽ sử dụng Term trongquery để đưa vào Highlighter • Term trong query phải ở dạng từ gốc (đã được stemming). Do đó trước khi đưa vào QueryScore dùng hàm Query.rewrite (IndexReader) để đưa Term trong query về dạng gốc

  29. Highlight • Highlighter dùng SimpleHTMLFormatter để highlight các Term • SimpleHTMLFormatter dùng thẻ Bold cho những từ highlight

  30. Demo • Mô tả dữ liệu • Cơ sở dữ liệu: “db_book” • Table: “tbl_book”

  31. Demo • Các Field:

  32. Demo • Dữ liệu mẫu: …

  33. Demo • Kết quả thực hiện • Xem Demo

  34. Cám Ơn ! www.themegallery.com

More Related