Custom Analyzer Elasticsearch
Bài đăng này đã không được cập nhật trong 7 năm
Máy phân tích tùy chỉnh (Custom Analyzer)
Khi các máy phân tích tích hợp không đáp ứng được nhu cầu của bạn, bạn có thể tạo một bộ phân tích tùy chỉnh sử dụng kết hợp thích hợp:
- Không sử dụng hoặc sử dụng bộ lọc ký tự Character Filters
- Một tokenizer Tokenizers
- Không sử dụng hoặc sử dụng bộ lọc token Token Filters
Cấu hình
Trình phân tích tùy chỉnh chấp nhận các tham số sau:
Tokenizer
: Trình tạo tokenizer được cài đặt sẵn hoặc được tuỳ chỉnh (bắt buộc phải có)Char Filter
: Một mảng tùy chọn các bộ lọc ký tự được cài đặt sẵn hoặc tùy chỉnh.Token Filter
: Một mảng tùy chọn các bộ lọc thẻ được xây dựng sẵn hoặc tùy chỉnh.position_increment_gap
: Khi lập chỉ mục mảng văn bản, Elasticsearch chèn khoảng cáchgiả
giữa kỳ cuối cùng của một giá trị và thời hạn đầu tiên của giá trị tiếp theo để đảm bảo rằng cụm từ truy vấn không khớp với hai thuật ngữ từ các phần tử mảng khác nhau. Mặc định là 100. Xem thêm position_increment_gap
Một vài ví dụ về Custon Analyzer
Ví dụ 1:
- Sử dụng bộ lọc ký tự: Html strip charfilter
- Sử dụng Standard Tokenizer
- Token Filter:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"char_filter": [
"html_strip"
],
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
}
}
POST my_index/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "Is this <b>déjà vu</b>?"
}
Ví dụ này cho biết điều khoản sau đây:
[ is, this, deja, vu ]
Và khi chúng ta gõ 1 trong những từ trên thì kết quả sẽ được trả về
Ví dụ 2
Ở ví dụ trước ta sử dụng những bộ lọc kí tự, bộ lọc token và tokenizer mặc định có sẵn của elasticsearch. Ví dụ này chúng ta sẽ tìm hiểu 1 ví dụ mà sử dụng những bộ lọc được custom.
Character Filter
: Sử dụng Mapping Character Filter thêm cấu hình thay thế:)
bằng_happy
và thay:(
thành_sad_
Tokenizer
: Sử dụng Pattern Tokenizer và cấu hình phân chia ký tự theo dấu.
Token Filters
:- Lowercase Token Filter
- Stop token filter:được cấu hình để sử dụng danh sách các từ dừng của tiếng Anh
Dưới đây là cách cấu hình
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"char_filter": [
"emoticons"
],
"tokenizer": "punctuation",
"filter": [
"lowercase",
"english_stop"
]
}
},
"tokenizer": {
"punctuation": {
"type": "pattern",
"pattern": "[ .,!?]"
}
},
"char_filter": {
"emoticons": {
"type": "mapping",
"mappings": [
":) => _happy_",
":( => _sad_"
]
}
},
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
}
}
}
}
}
POST my_index/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "I'm a :) person, and you?"
}
Và kết quả sẽ thu về các điều luật sau đây:
[ i'm, _happy_, person, you ]
Còn rất nhiều cấu hình khác có thể tủy chỉnh theo ý mình mọi người có thể xem thêm tại Custom Analyzer
All rights reserved