Elasticsearch - Analisis
Saat kueri diproses selama operasi pencarian, konten dalam indeks apa pun dianalisis oleh modul analisis. Modul ini terdiri dari analyzer, tokenizer, tokenfilters, dan charfilters. Jika tidak ada penganalisis yang ditentukan, maka secara default penganalisis, token, filter, dan tokenizer bawaan didaftarkan dengan modul analisis.
Dalam contoh berikut, kami menggunakan penganalisis standar yang digunakan saat penganalisis lain tidak ditentukan. Ini akan menganalisis kalimat berdasarkan tata bahasa dan menghasilkan kata-kata yang digunakan dalam kalimat tersebut.
POST _analyze
{
"analyzer": "standard",
"text": "Today's weather is beautiful"
}
Saat menjalankan kode di atas, kami mendapatkan respons seperti yang ditunjukkan di bawah ini -
{
"tokens" : [
{
"token" : "today's",
"start_offset" : 0,
"end_offset" : 7,
"type" : "",
"position" : 0
},
{
"token" : "weather",
"start_offset" : 8,
"end_offset" : 15,
"type" : "",
"position" : 1
},
{
"token" : "is",
"start_offset" : 16,
"end_offset" : 18,
"type" : "",
"position" : 2
},
{
"token" : "beautiful",
"start_offset" : 19,
"end_offset" : 28,
"type" : "",
"position" : 3
}
]
}
Mengonfigurasi penganalisis Standar
Kami dapat mengonfigurasi penganalisis standar dengan berbagai parameter untuk mendapatkan persyaratan khusus kami.
Dalam contoh berikut, kami mengonfigurasi penganalisis standar agar memiliki max_token_length 5.
Untuk ini, pertama-tama kita membuat indeks dengan penganalisis yang memiliki parameter max_length_token.
PUT index_4_analysis
{
"settings": {
"analysis": {
"analyzer": {
"my_english_analyzer": {
"type": "standard",
"max_token_length": 5,
"stopwords": "_english_"
}
}
}
}
}
Selanjutnya kami menerapkan penganalisis dengan teks seperti yang ditunjukkan di bawah ini. Harap perhatikan bagaimana token tidak muncul karena memiliki dua spasi di awal dan dua spasi di akhir. Untuk kata “ada”, ada spasi di awal dan spasi di ujungnya. Mengambil semuanya, itu menjadi 4 huruf dengan spasi dan itu tidak membuatnya menjadi kata. Harus ada karakter nonspace setidaknya di awal atau di akhir, untuk membuatnya menjadi kata yang dihitung.
POST index_4_analysis/_analyze
{
"analyzer": "my_english_analyzer",
"text": "Today's weather is beautiful"
}
Saat menjalankan kode di atas, kami mendapatkan respons seperti yang ditunjukkan di bawah ini -
{
"tokens" : [
{
"token" : "today",
"start_offset" : 0,
"end_offset" : 5,
"type" : "",
"position" : 0
},
{
"token" : "s",
"start_offset" : 6,
"end_offset" : 7,
"type" : "",
"position" : 1
},
{
"token" : "weath",
"start_offset" : 8,
"end_offset" : 13,
"type" : "",
"position" : 2
},
{
"token" : "er",
"start_offset" : 13,
"end_offset" : 15,
"type" : "",
"position" : 3
},
{
"token" : "beaut",
"start_offset" : 19,
"end_offset" : 24,
"type" : "",
"position" : 5
},
{
"token" : "iful",
"start_offset" : 24,
"end_offset" : 28,
"type" : "",
"position" : 6
}
]
}
Daftar berbagai penganalisis dan deskripsinya diberikan dalam tabel di bawah ini -
S.No | Penganalisis & Deskripsi |
---|---|
1 | Standard analyzer (standard) stopwords dan setelan max_token_length dapat disetel untuk penganalisis ini. Secara default, daftar stopwords kosong dan max_token_length adalah 255. |
2 | Simple analyzer (simple) Penganalisis ini terdiri dari tokenizer huruf kecil. |
3 | Whitespace analyzer (whitespace) Penganalisis ini terdiri dari tokenizer spasi putih. |
4 | Stop analyzer (stop) stopwords dan stopwords_path dapat dikonfigurasi. Secara default, stopwords diinisialisasi ke kata stop Inggris dan stopwords_path berisi jalur ke file teks dengan kata-kata berhenti. |
Tokenizer
Tokenizer digunakan untuk menghasilkan token dari teks di Elasticsearch. Teks dapat dipecah menjadi token dengan mempertimbangkan spasi atau tanda baca lainnya. Elasticsearch memiliki banyak tokenizer bawaan, yang dapat digunakan di penganalisis khusus.
Contoh tokenizer yang memecah teks menjadi beberapa istilah setiap kali ia menemukan karakter yang bukan huruf, tetapi juga huruf kecil semua istilah, ditunjukkan di bawah ini -
POST _analyze
{
"tokenizer": "lowercase",
"text": "It Was a Beautiful Weather 5 Days ago."
}
Saat menjalankan kode di atas, kami mendapatkan respons seperti yang ditunjukkan di bawah ini -
{
"tokens" : [
{
"token" : "it",
"start_offset" : 0,
"end_offset" : 2,
"type" : "word",
"position" : 0
},
{
"token" : "was",
"start_offset" : 3,
"end_offset" : 6,
"type" : "word",
"position" : 1
},
{
"token" : "a",
"start_offset" : 7,
"end_offset" : 8,
"type" : "word",
"position" : 2
},
{
"token" : "beautiful",
"start_offset" : 9,
"end_offset" : 18,
"type" : "word",
"position" : 3
},
{
"token" : "weather",
"start_offset" : 19,
"end_offset" : 26,
"type" : "word",
"position" : 4
},
{
"token" : "days",
"start_offset" : 29,
"end_offset" : 33,
"type" : "word",
"position" : 5
},
{
"token" : "ago",
"start_offset" : 34,
"end_offset" : 37,
"type" : "word",
"position" : 6
}
]
}
Daftar Tokenizer dan deskripsinya ditampilkan di sini pada tabel yang diberikan di bawah ini -
S.No | Tokenizer & Deskripsi |
---|---|
1 | Standard tokenizer (standard) Ini dibangun di atas tokenizer berbasis tata bahasa dan max_token_length dapat dikonfigurasi untuk tokenizer ini. |
2 | Edge NGram tokenizer (edgeNGram) Pengaturan seperti min_gram, max_gram, token_chars dapat diatur untuk tokenizer ini. |
3 | Keyword tokenizer (keyword) Ini menghasilkan seluruh masukan sebagai keluaran dan buffer_size dapat disetel untuk ini. |
4 | Letter tokenizer (letter) Ini menangkap seluruh kata sampai ditemukan non-huruf. |