Elasticsearch adalah salah satu teknologi search engine yang paling populer di dunia. Dalam artikel ini, kita akan membahas penggunaan analyzer QQ dan highlight dalam Elasticsearch.
Membuat Indeks dan Dokumen
Pertama-tama, kita harus membuat indeks dengan nama "index" dan jenis "_doc". Kita juga akan menambahkan atribut "content" dengan tipe "text" dan menggunakan analyzer "qq_max" dan "qq_smart".
PUT /index
{
"settings": {
"analysis": {
"analyzer": {
"qq_max": {
"type": "custom",
"tokenizer": "standard",
"filter": ["stopwords", "lowercase"]
},
"qq_smart": {
"type": "custom",
"tokenizer": "standard",
"filter": ["stopwords", "lowercase", "smart"]
}
}
}
}
}
POST /index/_doc/1
{
"content": "I downloaded the Honor of Kings from WeChat"
}
POST /index/_doc/2
{
"content": "Ministry of Housing and Urban-Rural Development: to complete landscape resource registration of famous towns and villages by the end of September"
}
POST /index/_doc/3
{
"content": "Latest weather forecast from China Meteorological Administration"
}
POST /index/_doc/4
{
"content": "I live near ICOMOS China"
}
Pencarian dengan Highlight
Kita dapat melakukan pencarian menggunakan query match dan highlight. Kita akan mencari dokumen yang memiliki kata "China" dalam field "content". Kita juga akan menampilkan kata-kata yang memiliki tingkat relevansi tinggi.
GET /index/_search
{
"query": {
"match": {
"content": "China"
}
},
"highlight": {
"pre_tags": ["<tag1>", "<tag2>"],
"post_tags": ["</tag1>", "</tag2>"],
"fields": {"content": {}}
}
}
Hasil Pencarian
Setelah menjalankan perintah pencarian, kita akan mendapatkan hasil sebagai berikut:
{
"took" : 108,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 0.7199211,
"hits" : [
{
"_index" : "index",
"_type" : "_doc",
"_id" : "4",
"_score" : 0.7199211,
"_source" : {
"content": "I live near ICOMOS China"
},
"highlight" : {
"content" : [
"I live near ICOMOS <tag1>China</tag1>"
]
}
},
{
"_index" : "index",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.6235748,
"_source" : {
"content": "Latest weather forecast from China Meteorological Administration"
},
"highlight" : {
"content" : [
"Latest weather forecast from <tag1>China</tag1> Meteorological Administration"
]
}
}
]
}
}
Penggunaan Dictionary Kustom
QQ analysis plugin memungkinkan kita untuk mengkonfigurasi dictionary kustom. Setelah di-upload, sebuah dictionary akan trigger restart cluster secara otomatis; maka, perlu dijamin bahwa cluster dalam status GREEN dan tidak ada indeks yang memiliki replika tunggal.
Untuk mengupload dictionary, kita harus login ke ES console, kemudian klik pada cluster ID/nama untuk masuk ke halaman detail cluster. Selanjutnya, kita harus klik "Plugin List" untuk masuk ke halaman pengelola plugin, kemudian cari plugin QQ analysis dan klik "Update Dictionary".
Troubleshooting and Testing
Jika hasil analisis QQ tidak sesuai dengan ekspektasi, kita dapat menjalankan perintah-perintah berikut untuk troubleshooting dan testing:
GET _analyze
{
"text": "I live near ICOMOS China",
"analyzer": "qq_max"
}
GET _analyze
{
"text": "I live near ICOMOS China",
"analyzer": "qq_smart"
}
Dalam artikel ini, kita telah membahas penggunaan analyzer QQ dan highlight dalam Elasticsearch. Kita juga telah mengetahui cara membuat indeks dan mengupload dictionary kustom.