Tìm hiểu Elasticsearch – Custom Analyzers
Custom Analyzers Elasticsearch cho phép chung ta có thể tạo ra custom analyzers bao gồm character filters, tokenizers, vàtoken filters mà có thể phù hơp với dữ liệu và mục đích riêng Trong Analysis and Analyzers, chúng ta nói rằng 1 analyzer bao gồm 3 functions Character filters ...
Custom Analyzers
Elasticsearch cho phép chung ta có thể tạo ra custom analyzers bao gồm character filters, tokenizers, vàtoken filters mà có thể phù hơp với dữ liệu và mục đích riêng
Trong
Analysis and Analyzers, chúng ta nói rằng 1 analyzer bao gồm 3 functions
Character filters
Character filters sử dụng để dọn dẹp một string trước khi chúng được tokenized. Một analyzercó thể có chiều character filter hoặc không.
Tokenizers
Một analyzer phải có 1 tokenizer. Tokenizer bẻ nhỏ string thành những terms (từ) riêng biệt hoặc token riếng biệt. Có 1 chuẩn tokenizer mà xóa bỏ các dấu cách, dâu ngăn và loại bỏ hầu hết các dấu chấm câu
Token filters
Sau khi tokenization,kêt quả token stream được thông qua bất cứ bộ lọc nào???? Token filters có thể thay đổi thêm mới hoặc xóa bỏ tokens.
Creating a Custom Analyzer
Thay đổi trong analysis để Custom Analyzer:
PUT /my_index
{ "settings": { "analysis": { "char_filter": { ... custom character filters ... }, "tokenizer": { ... custom tokenizers ... }, "filter": { ... custom token filters ... }, "analyzer": { ... custom analyzers ... } } } }
- html_strip character filter.
- Thay thế ký tự & thành" and ", sử dụng bộ lọc mapping :
"char_filter": { "&_to_and": { "type": "mapping", "mappings": [ "&=> and "] } }
- Tokenize các từ, sử dụng chuẩn standard tokenizer.
- Lowercase terms, using the lowercase token filter.
- Xóa bỏ các từ trong stopwords, sử dụng stop token filter:
"filter": { "my_stopwords": { "type": "stop", "stopwords": [ "the", "a" ] } }
"analyzer": { "my_analyzer": { "type": "custom", "char_filter": [ "html_strip", "&_to_and" ], "tokenizer": "standard", "filter": [ "lowercase", "my_stopwords" ] } }
PUT /my_index
{ "settings": { "analysis": { "char_filter": { "&_to_and": { "type": "mapping", "mappings": [ "&=> and "] }}, "filter": { "my_stopwords": { "type": "stop", "stopwords": [ "the", "a" ] }}, "analyzer": { "my_analyzer": { "type": "custom", "char_filter": [ "html_strip", "&_to_and" ], "tokenizer": "standard", "filter": [ "lowercase", "my_stopwords" ] }} }}}
Kiểm tra kết quả sau khi setup analyzer: GET /my_index/_analyze
{ "text": "The quick & brown fox", "analyzer": "my_analyzer" }
Kết quả trả về là các tokens như sau:
{ "tokens" : [ { "token" : "quick", "position" : 2 }, { "token" : "and", "position" : 3 }, { "token" : "brown", "position" : 4 }, { "token" : "fox", "position" : 5 } ] }
PUT /my_index/_mapping/my_type
{ "properties": { "title": { "type": "string", "analyzer": "my_analyzer" } } }
Cám ơn mọi người đã đọc bài viết này, bài viết còn sơ sài mong mọi người thông cảm Mình sẽ cố gắng tìm hiểu kỹ hơn trong bài viết xong
Thank you ^_^