Opseg
Referenca za pravljenje indexa u elasticsearch-u za srpska latinična slova. Ne obuhvata instalaciju elasticsearch-a i ubacivanje dokumenata.
Kreiranje indeksa
Ovo je primer kako sam podesio autocomplete ili search suggestions za latinićna slova sa elasticsearch-om.
Filter ascii_folding
pretvara slova sa kukicom u slova bez.
ćžšž => czsz
U slučaju pisanja đ
kao dj
može se koristiti char_filter
:
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"dj => đ"
]
}
}
Filter split_modles
sam koristio da bih podelio brojeve modela proizvoda koji su sastavljeni od karaktera i slova na zasebne tokene (reči). Na primer: mx270
će biti podeljen na mx
i 270
.
Polje koje se mapira na ovaj način je name
.
PUT /my_index
{
"settings": {
"analysis": {
"filter" : {
"ascii_folding" : {
"type" : "asciifolding",
"preserve_original" : true
},
"split_models": {
"type": "word_delimiter",
"preserve_original": true,
"split_on_numerics": true
}
},
"analyzer": {
"rs_analyzer":{
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "ascii_folding", "split_models", "ascii_folding"]
}
},
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"dj => đ"
]
}
}
}
},
"mappings": {
"products": {
"properties": {
"name": {
"type": "string",
"analyzer": "rs_analyzer"
}
}
}
}
}
Testiranje
Metoda _analyze
prikazuje koji tokeni su izgenerisani za dati tekst.
GET /my_index/_analyze
{
"analyzer": "rs_analyzer",
"text": "Klasična gitara"
}
Povlacenje podataka
Instant search, ili search-as-you-type može biti implementiran korišćenjem match_phrase_prefix
query-ja.
GET /my_index/products/_search
{
"query": {
"match_phrase_prefix" : {
"name" : {
"query": "gitara klasicna",
"slop": 10
}
}
}
}
Interesantna opcija može biti i highlighting koji će okružiti tekst koji se podudara sa traženim rečima u <em>
koji se lako može stilizovati.