Hướng dẫn elasticsearch python - trăn đàn hồi
Show Đã đăng vào thg 6 15, 2018 3:31 CH 9 phút đọc 9 phút đọc ElasticSearch là gì?Elasticsearch là công cụ tìm kiếm dựa trên nền tảng Apache Lucene. Nó cung cấp API cho việc lưu trữ và tìm kiếm dữ liệu một cách nhanh chóng. Nó được xây dựng, phát triển bằng ngôn ngữ java dựa trên Lucene – phần mềm tìm kiếm và trả về thông tin (information retrieval software) với hơn 15 năm kinh nghiệm về full text indexing and searching. Elasticsearch được xây dựng để hoạt động như một server cloud theo cơ chế của RESTful. Điều này giúp nó có thể tương tác và sử dụng bới rất nhiều ngôn ngữ , cũng chính do đó cũng là điểm yếu của nó khi độ bảo mật không cao. Ưu và nhược điểm của ElasticSearch, khi nào nên sử dụng?
Ai đang sử dụng Elasticsearch? Các khái niệm cơ bảnCơ chế tìm kiếm Giả sử có hai văn bản:
Các câu truy vấn cơ bản
Là truy vấn chuẩn để thực hiện full text query. Bao gồm truy vấn kết hợp và truy vấn cụm từ hoặc gần đúng. Match query chấp nhận văn bản, số, ngày tháng. Match query trả về các document chứa ít nhất 1 trong các từ trong truy vấn.
Trả về các document chứa cụm từ trong truy vấn.
Trả về các document khớp với tiền tố trong truy vấn.
Tương tự match query nhưng cho phép tìm kiếm trên nhiều trường.
Sẽ làm gì khi người dung đưa ra 1 truy vấn có 4 từ và cần lấy có các document chứa ít nhất 3 từ trong đó. Elastic hỗ chợ minimum_should_match parameter, cho phép chỉ ra số terms sẽ so sánh trong tài liệu chứa các kết quả thích hợp .
Combining queries cho phép thực hiện nhiều điều kiện trong tìm kiếm.
Để nâng cao hiệu quả tìm kiếm cần sử dụng các Analyzer phù hợp. Analyzer là thành phần được sử dụng để chuẩn hóa các document trong Elasticsearch. Các Analyzer thực hiện một số công việc như: Character filters: Tiền xử lý chuỗi đầu vào như việc loại bỏ các thẻ html_tag hay chuyền ký hiệu & thành thành chữ "and". Tokenizer: Chuỗi sau khi được làm "sạch" bởi Chracter filters thì sẽ được tách từ bởi một bộ tách từ tokenizer do mình lựa chọn hoặc định nghĩa, đơn giản nhất là tách từ theo khoảng trắng hay dấu chấm câu, các từ được tách ra này gọi là term. Token filters Cuối cùng, mỗi term được qua Token filters (bộ lọc thẻ) để "làm mượt" thêm, ví dụ như việc chuyển các ký tự hoa về ký tự thường (lowercase) hay loại bỏ các từ dừng (từ xuất hiện nhiều nhưng gần như không ảnh hưởng tới kết quả tìm kiếm). Query được phân tích bởi analyzer. Fuzzy SearchFuzzy Seach (tìm kiếm "mờ"), hay còn hay được gọi là Approximate Search (tìm kiếm "xấp xỉ") là khái niệm để chỉ kỹ thuật để tìm kiếm một xâu "gần giống" (thay vì "giống hệt") so với một xâu cho trước. Việc áp dụng kỹ thuật Fuzzy Search giúp cho người dùng dễ dàng tiếp cận được với nội dung hơn, khi mà họ có thể tìm thấy được những thứ cần thiết, ngay cả khi họ không nhớ được chính xác nội dung mình muốn tìm kiếm là gì. Fuzzy Seach trong Elasticsearch sử dụng nền tảng dựa trên khoảng cách Levenstein. Khoảng cách Levenshtein giữa chuỗi S1 và chuỗi S2 là số bước ít nhất biến chuỗi S1 thành chuỗi S2 thông qua 3 phép biến đổi là:
Ví dụ: Khoảng cách Levenshtein giữa 2 chuỗi "kitten" và "sitting" là 3, vì phải dùng ít nhất 3 lần biến đổi.
Fuzzy search trong Elasticsearch sử dụng khoảng cách Levenshtein và cho phép ta config tham số fuzziness để cho kết quả phù hợp nhất với nhu cầu:
Đoạn truy vấn ví dụ cho tìm kiếm mờ Kết luậnNhư vậy ở trên đã hướng dẫn những vẫn đề cơ bản nhất về elasticsearch, hi vọng qua bài viết này sẽ giúp người đọc hiểu thêm hoặc biết thêm một công cụ hỗ trợ việc tìm kiếm kết quả một cách nhanh chóng mà nhiều người cũng như doanh nghiệp tin dùng, mong rằng người đọc sẽ có thể dử dụng tốt nó trong các dự án cũng như công việc của mình. Cảm ơn sự theo dõi của mọi người. All rights reserved |