Elasticsearch waa makiin raadin leh json rest api, isticmaalaya Lucene oo ku qoran Java. Tilmaanta dhammaan faa'iidooyinka matoorkaan ayaa laga heli karaa at website-ka rasmiga ah. Waxa soo socda waxaan u tixraaci doonaa Elasticsearch sida ES.
Matoorada la midka ah ayaa loo isticmaalaa raadinta adag ee xogta dukumeentiga. Tusaale ahaan, raadinta iyada oo la tixgelinayo qaab-dhismeedka luqadda ama raadinta isku-duwayaasha geo.
Maqaalkan waxaan ka hadli doonaa aasaaska ES aniga oo isticmaalaya tusaalaha tilmaamaya qoraallada blog-ka. Waxaan ku tusi doonaa sida loo shaandheeyo, loo kala saaro oo loo raadiyo dukumeentiyada
Si aanan ugu tiirsanaan nidaamka hawlgalka, waxaan samayn doonaa dhammaan codsiyada ES anigoo isticmaalaya CURL. Waxa kale oo jira plugin loogu talagalay google chrome oo la yiraahdo dareen.
Qoraalku wuxuu ka kooban yahay xiriirinta dukumeentiyada iyo ilo kale. Dhammaadka waxaa jira xiriiriyeyaal si degdeg ah loo galo dukumeentiyada. Qeexitaannada ereyada aan la aqoon ayaa laga heli karaa qaamuusyada.
Rakibaadda
Si tan loo sameeyo, waxaan marka hore u baahanahay Java. Horumarinta ku talin ku rakib noocyada Java ee ka cusub Java 8 update 20 ama Java 7 update 55.
ES si toos ah ayaa loo sameeyay index blog iyo nooca boostada. Waxaan sawiri karnaa isbarbardhig shuruudaysan: tusmuhu waa xog ururin, noocuna waa miis ku jira xogtan. Nooc kastaa wuxuu leeyahay nidaam u gaar ah - khariidaynta, sida miiska xiriirka. Khariidaynta si toos ah ayaa loo soo saarayaa marka dukumeentiga la tilmaamo:
# ΠΠΎΠ»ΡΡΠΈΠΌ mapping Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠ° blog
curl -XGET "$ES_URL/blog/_mapping?pretty"
Jawaabta server-ka, waxaan ku daray qiyamka goobaha dukumeentiga la tilmaamay ee faallooyinka:
Waxaa xusid mudan in ES-du aysan kala sooceynin hal qiime iyo qiyamyo kala duwan. Tusaale ahaan, goobta cinwaanku waxay si fudud uga kooban tahay cinwaan, goobta tags-kuna waxa ay ka kooban tahay xargo badan, in kasta oo ay si isku mid ah uga muuqdaan khariidaynta.
Wax badan ayaanu ka hadli doonaa khariidaynta.
Codsiyada
Soo celinta dukumeenti aqoonsigiisa:
# ΠΈΠ·Π²Π»Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ id 1 ΡΠΈΠΏΠ° post ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠ° blog
curl -XGET "$ES_URL/blog/post/1?pretty"
Furayaal cusub ayaa ka soo muuqday jawaabta: _version ΠΈ _source. Guud ahaan, dhammaan furayaasha laga bilaabo _ waxaa loo kala saaraa si rasmi ah.
Furaha _version waxay tusinaysaa nooca dukumentiga. Waxaa loo baahan yahay in habka qufulka ee rajooyinka leh uu shaqeeyo. Tusaale ahaan, waxaan rabnaa inaan bedelno dukumeenti leh nooca 1. Waxaan soo gudbineynaa dukumeenti la beddelay oo aan muujineyno in kani yahay tafatirka dukumeenti leh nooca 1. Haddii qof kale uu sidoo kale tafatiray dukumeenti leh nooca 1 oo uu soo gudbiyay isbeddello annaga naga hor, markaa ES ma aqbali doonto isbedeladayada, sababtoo ah waxay ku kaydinaysaa dukumeentiga nooca 2.
Furaha _source waxa ku jira dukumeenti aanu tilmaanay. ES uma isticmaasho qiimahan hawlgallada raadinta sababtoo ah Tilmaamaha waxaa loo isticmaalaa raadinta. Si loo badbaadiyo meel bannaan, ES waxay kaydisaa dukumeenti isha la isku cadeeyey. Haddii aan kaliya u baahnayn id, oo aan u baahnayn dhammaan dukumeentiga isha, markaa waxaan joojin karnaa kaydinta isha.
Haddii aanan u baahnayn macluumaad dheeri ah, waxaan heli karnaa kaliya waxa ku jira _source:
Waxaan doorannay qoraalkii ugu dambeeyay. size xaddidaya tirada dukumentiyada la soo saarayo. total waxay tusinaysaa wadarta guud ee dukumeentiyada u dhigma codsiga. sort Wax-soo-saarka waxa uu ka kooban yahay tirooyin tirooyin ah oo kala-soocidda. Kuwaas. taariikhda waxaa loo beddelay tiro. Macluumaad dheeraad ah oo ku saabsan kala-soocidda ayaa laga heli karaa dukumentiyo.
Shaandhaynta iyo weydiimaha
ES tan iyo nooca 2 ma kala saaro filtarrada iyo weydiimaha, beddelkeeda fikradda macnaha guud ayaa la soo bandhigay.
Macnaha guud ee waydiinta way ka duwan tahay macnaha shaandhada taas oo waydiintu dhaliso _score oo aan la kaydin Waxaan ku tusi doonaa waxa _dhibcaha hadhow yahay.
Ku sifee taariikhda
Waxaan isticmaalnaa codsiga kala duwan marka la eego shaandhada:
Si kastaba ha noqotee, haddii aan raadinno "sheekooyin" goobta nuxurka, ma heli doonno wax, sababtoo ah Tusmadu waxa ay ka kooban tahay oo keliya ereyada asalka ah, ee ma aha afkooda. Si aad u samayso raadinta tayada sare leh, waxaad u baahan tahay inaad habayso falanqaynta.
field _score muujinaya ku habboonaanta. Haddii codsiga lagu fuliyo shaandhada, markaa qiimaha _score wuxuu had iyo jeer la mid noqonayaa 1, taas oo macnaheedu yahay isbarbardhig dhammaystiran shaandhada.
Falanqeeyayaasha
Falanqeeyayaasha ayaa loo baahan yahay si loogu beddelo qoraalka isha laga dhigo tiro calaamado ah.
Falanqeeyayaasha ayaa ka kooban hal Qeexiyaha iyo dhawr doorasho Tusmooyinka Token. Tokenizer waxaa laga yaabaa inay ka horreeyaan dhowr CharFilters. Tokenizer-yadu waxay jebiyaan xadhigga isha calaamado, sida meelaha bannaan iyo xarfaha xarakaynta. TokenFilter waxa uu beddeli karaa calaamado, tirtiri karaa ama ku dari karaa kuwa cusub, tusaale ahaan, waxa uu ka tagaa jiridda kelmadda, ka saara hor-u-jeedinta, ku darso ereyo la mid ah. CharFilter - waxay beddeshaa dhammaan xargaha isha, tusaale ahaan, waxay gooyaa tags html.
Marka hore, dhammaan calaamadaha HTML ayaa laga saari doonaa xargaha isha, ka dibna heerka tokenizer wuxuu u kala qaybin doonaa calaamado, calaamadihii ka soo baxay waxay u guuri doonaan kuwa yaryar, ereyada aan muhiimka ahayn waa la saari doonaa, calaamadaha soo hadhayna waxay ahaan doonaan asalka ereyga.
Samaynta Tusaha
Xagga sare waxaan ku sharaxnay falanqeeyaha caadiga ah. Waxay khusaysaa dhammaan goobaha xargaha. Boostadayadu waxay ka kooban tahay sumadyo kala duwan, markaa summada waxaa sidoo kale habayn doona falanqeeyaha. Sababtoo ah Waxaan ku raadineynaa qoraalada si sax ah oo u dhigma sumadda, ka dib waxaan u baahanahay inaan joojino falanqaynta goobta tags-ka.
Aan abuurno index blog2 oo leh falanqeeye iyo khariidad, kaas oo falanqaynta goobta tagsku ay naafada tahay:
Aynu ku darno isla 3 qoraalo tusahan (blog2). Waan ka tagi doonaa nidaamkan sababtoo ah... waxay la mid tahay in lagu daro dukumeentiyada tusmada blog-ka.
Sababtoo ah Waxaan isticmaaleynaa falanqeeye leh stemming Ruush, ka dib codsigani wuxuu soo celin doonaa dhammaan dukumentiyada, in kasta oo ay ka kooban yihiin kaliya ereyga 'taariikhda'.
Codsiga waxaa ku jiri kara xarfo gaar ah, tusaale ahaan:
""fried eggs" +(eggplant | potato) -frittata"
Codso syntax:
+ signifies AND operation
| signifies OR operation
- negates a single token
" wraps a number of tokens to signify a phrase for searching
* at the end of a term signifies a prefix query
( and ) signify precedence
~N after a word signifies edit distance (fuzziness)
~N after a phrase signifies slop amount