• No results found

Diskussion av utv¨arderingsresultat

Testerna f¨or kapacitet visar att en st¨orre m¨angd anrop till Elasticsearch-servern orsakar variationer i hastigheten. Resultatet av test 2 visar en stor skillnad i j¨amf¨orelse mot de andra testerna. Detta beror troligtvis p˚a att arbetsm¨angden p˚a systemet som anv¨ands f¨or testerna var f¨or h¨og. De genomsnittliga hastigheterna p˚a testen ¨ar l¨agre ¨an vad som var f¨orv¨antat. Detta syntes tydligt mot slutet av testerna d˚a hastigheten ¨okade gradvis. Datorn som anv¨ands f¨or att k¨ora testerna och Elasticsearch-servern var inte ett system optimerat f¨or att fungera som en server. Ett mer optimerat serversystem hade troligt- vis h¨ojt den l˚angsammaste hastigheten, vilket hade gett ¨annu mer realistiska resultat. Sammanfattningsvis kan vi konstatera att resultaten fr˚an kapacitetstesterna uppfyllde kapacitetskravet i fem av sex tester.

10 Resultat och diskussion

Test 2 hade en h¨ogre genomsnittlig hastighet och anledningarna bakom detta ¨ar samma som beskrevs i den f¨oreg˚aende sektionen. Den genomsnittliga hastigheten ¨over alla tes- ter ut¨over test 2 var sju millisekunder per databasfr˚aga. D˚a testresultaten utkom fr˚an en simulering med h¨og arbetsm¨angd f¨or Elasticsearch-servern var det ett lovande resultat. D˚a Elasticsearch-servern inte alltid kommer att vara under s˚adan arbetsm¨angd kommer den realistiska genomsnittliga hastigheten var vagt snabbare. Med en genomsnittliga hastighet som inte ¨overskreds 13 millisekunder f¨orutom i test 2 anses hastighetskravet uppfyllt.

10

Resultat och diskussion

M˚alen med TribusSearch var att utveckla en s¨okfunktion som hanterar stavfel och bris- tande samt ¨overfl¨odig indata, ger relevanta s¨okresultat, samt erbjuder automatisk kom- plettering medan anv¨andaren skriver i s¨okf¨altet. S¨okfunktionen skulle ¨aven kunna utf¨ora databasfr˚agor p˚a mindre ¨an 200ms i genomsnitt, samt tolerera 2000 databasfr˚agor sam- tidigt utan att kompromissa hastighetskravet.

Av dessa m˚al kan vi konstatera att samtliga har uppn˚atts till en viss grad. S¨okfunktionen st¨odjer automatisk komplettering av indata, d¨ar max fem av resultaten visas under s¨okf¨altet i takt med inmatning av s¨okord. ¨Aven stavfel tolereras till en viss gr¨ans som ¨ar satt till h¨ogst ett felaktigt tecken. Ett s¨okord kan inneh˚alla ett ¨overfl¨odigt tecken eller inneh˚alla ett tecken som ¨ar felplacerat med som h¨ogst ett avst˚and av h¨ogst ett tecken.

S¨okfunktionen ¨ar kapabel till att identifiera kategorier (varugrupper och l¨ander) fr˚an tex- ten i s¨okf¨altet, f¨orutsatt att texten ¨ar r¨attstavad. Ett exempel p˚a detta kan vara vid s¨okning p˚a ’ ¨Ol’ eller ’Tyskland’. Dessa identifierade kategorier dyker upp under s¨okf¨altet, av vil- ka anv¨andaren har m¨ojlighet att klicka p˚a. Trycker man p˚a n˚agon av dessa kategorier s˚a sker en s¨okning efter produkter som tillh¨or den kategori som man har klickat p˚a. Med v˚ara resultat kan vi konstatera att Elasticsearch var ett bra val av s¨okmotor. Den har givit oss de n¨odv¨andiga funktionaliteter och m¨ojlighet att en st¨orre m¨angd olika databas- fr˚agor. ¨Aven andra verktyg, som NodeJS och JMeter har varit passande och underl¨attat arbetet. En sak som skulle kunna gjorts annorlunda ¨ar att inte anv¨anda ramverket React, eftersom att det tog l˚ang tid att l¨ara sig och inte anv¨andes till sin fulla potential.

Om vi j¨amf¨or TribusSearch med Apotekets s¨okfunktion, som presenterades i relatera- de arbeten anser vi att TribusSearch ¨ar snabbare p˚a att f¨orsl˚a kategorier. En f¨ordel med Apotekets s¨okfunktion ¨ar att den f¨oresl˚ar fraser vid s¨okning, en funktion som Tribus- Search saknar. TribusSearch v¨aljer ist¨allet att visa resultat som inneh˚aller en term som p˚aminner om det felstavade ordet.

12 Framtida arbete

11

Slutsatser

Resultatet av projektet ¨ar en ny s¨okfunktion som ¨ar anpassad till Systembolagets sorti- ment. Denna s¨okfunktion ¨ar byggd s˚a att den underl¨attar samt hj¨alper anv¨andaren att hit- ta bland Systembolagets sortiment. Detta g¨ors med hj¨alp av olika funktioner, bland an- nat automatisk komplettering, hantering av stavfel och att kunna matcha med de termer som anv¨andaren skriver i s¨okf¨altet. Med matcha menas till exempel att anv¨andaren en- dast vill se produkter som ¨ar ekologiska. Projektet underl¨attar s¨okandet f¨or anv¨andaren och ger resultat som ¨ar relevanta oberoende p˚a om information saknas fr˚an anv¨andarens s¨okning. Den nya s¨okfunktionen visar en markant f¨orb¨attring p˚a s¨okresultat med bris- tande och felstavad indata j¨amf¨ort med Systembolagets nuvarande s¨okfunktion, vilket kan ses som en ut¨okning av anv¨andarv¨anligheten.

12

Framtida arbete

Ett f¨orsta steg i att f¨orb¨attra TribusSearch skulle vara att l¨agga in mer s¨okbar data om produkterna i databasen. Denna data skulle t.ex. kunna vara druvor, vindistrikt, eller aktuell lagerstatus hos butikerna. D˚a tekniken f¨or att implementera denna redan finns i TribusSearch skulle det vara m¨ojligt att implementera detta f¨orutsatt att r¨att data tillhan- dah¨olls av uppdragsgivaren.

Ett till steg i vidareutveckling av TribusSearch skulle kunna vara att implementera s¨okning av flera oberoende fraser samtidigt. Det enklaste exemplet att beskriva den- na brist i TribusSearch ¨ar vid s¨okning efter tv˚a olika l¨ander. Den nuvarande versionen av TribusSearch letar efter produkter som inneh˚aller b˚ada dessa l¨ander i n˚agot f¨alt och hittar s˚aledes inget resultat. Ett f¨orb¨attrat TribusSearch skulle kunna visa alla resultat som har ett f¨alt som inneh˚aller ett av dessa l¨ander.

En mer avl¨agsen vidareutveckling skulle kunna vara att implementera n˚agon form av maskinl¨arning f¨or s¨okfunktionen. Detta skulle kunna anv¨andas f¨or att l¨ara s¨okfunktionen vilka produkter som m˚anga kunder tittar p˚a, och d¨arf¨or ranka dessa h¨ogre vid s¨okningar. Om en s˚adan funktion ligger inom Systembolagets riktlinjer g˚ar dock att ifr˚agas¨atta, d˚a detta skulle kunna ¨oka f¨ors¨aljningen av alkoholhaltiga drycker.

Referenser

Referenser

[1] “Alkohollagstiftning i sverige,” accessed: 2017-04-09. [Online]. Available: http://www.iq.se/sv/fakta-om-alkohol/lagstiftningen

[2] “Analysis,” accessed: 2017-05-10. [Online]. Available: https://www.elastic.co/ guide/en/elasticsearch/reference/current/analysis.html

[3] “Anatomy of an analyzer,” accessed: 2017-05-10. [Online]. Available: https: //www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html [4] “Api,” accessed: 2017-05-06. [Online]. Available: https://en.wikipedia.org/wiki/

Application programming interface

[5] “Apoteket,” accessed: 2017-04-22. [Online]. Available: https://www.apoteket.se/ [6] “Building a search engine for e-commerce,” acces-

sed: 2017-04-01. [Online]. Available: http://dogdogfish.com/guide/ building-a-search-engine-for-e-commerce-with-elasticsearch/

[7] “Bulk api,” accessed: 2017-05-10. [Online]. Available: https://www.elastic.co/ guide/en/elasticsearch/reference/current/docs-bulk.html

[8] “Cdon,” accessed: 2017-05-10. [Online]. Available: http://cdon.se/

[9] “Convert xml to json,” accessed: 2017-05-10. [Online]. Available: http: //convertjson.com/xml-to-json.htm

[10] “Db-engines ranking - trend of elasticsearch popularity,” accessed: 2017- 05-30. [Online]. Available: https://db-engines.com/en/ranking trend/system/ Elasticsearch

[11] “Discovering javascript object notation.” [Online]. Available: http://ieeexplore. ieee.org.ezproxy.its.uu.se/document/6178118/

[12] “document-oriented,” accessed: 2017-06-01. [Online]. Avai- lable: https://developer.couchbase.com/documentation/server/3.x/developer/ dev-guide-3.0/compare-docs-vs-relational.html

[13] “Edge ngram tokenizer,” accessed: 2017-05-10. [Onli- ne]. Available: https://www.elastic.co/guide/en/elasticsearch/reference/current/ analysis-edgengram-tokenizer.html

[14] “Elasticsearch, basic concepts,” accessed: 2017-04-23. [Online]. Available: https: //www.elastic.co/guide/en/elasticsearch/reference/current/ basic concepts.html

Referenser

[15] “Elasticsearch, restful, distributed search and analytics,” accessed: 2017-04-22. [Online]. Available: https://www.elastic.co/products/elasticsearch

[16] “Extensible markup language (xml),” accessed: 2017-05-10. [Online]. Available: https://www.w3.org/XML/

[17] “Filter,” accessed: 2017-05-11. [Online]. Available: https://www.elastic.co/guide/ en/elasticsearch/reference/current/query-dsl-filtered-query.html

[18] “Full-text search,” accessed: 2017-04-22. [Online]. Available: https://docs. microsoft.com/en-us/sql/relational-databases/search/full-text-search

[19] “Fuzziness,” accessed: 2017-05-14. [Online]. Available: https://www.elastic.co/ guide/en/elasticsearch/guide/current/fuzziness.html

[20] “Google chrome,” accessed: 2017-05-15. [Online]. Available: https://www. google.com/chrome

[21] “Html dom,” accessed: 2017-04-28. [Online]. Available: https://www.w3schools. com/js/js htmldom.asp

[22] “Html dom-document,” accessed: 2017-04-28. [Online]. Available: https: //www.w3schools.com/js/js htmldom document.asp

[23] “Http,” accessed: 2017-04-28. [Online]. Available: https://www.w3.org/Protocols/ HTTP/AsImplemented.html

[24] “Http f¨orfr˚agningar,” accessed: 2017-04-28. [Online]. Available: http://www. tutorialspoint.com/http/http requests

[25] “Index vs type,” accessed: 2017-05-06. [Online]. Available: https://www.elastic. co/blog/index-vs-type

[26] “Jmeter,” accessed: 2017-05-11. [Online]. Available: http://jmeter.apache.org/ [27] “Json elasticsearch,” accessed: 2017-05-30. [Online]. Available:

https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-object-type. html#mapping-object-type

[28] “Lucene,” accessed: 2017-04-22. [Online]. Available: https://lucene.apache.org/ core/

[29] “Mapping,” accessed: 2017-05-10. [Online]. Available: https://www.elastic.co/ guide/en/elasticsearch/reference/current/mapping.html

Referenser

[30] “Match,” accessed: 2017-05-11. [Online]. Available: https://www.elastic.co/guide/ en/elasticsearch/reference/current/query-dsl-match-query.html

[31] “Matsmart,” accessed: 2017-05-10. [Online]. Available: http://www.matsmart.se/ [32] “Microsoft internet explorer,” accessed: 2017-05-15. [Online]. Available:

https://www.microsoft.com/sv-se/download/internet-explorer.aspx

[33] “Multi match query,” accessed: 2017-05-13. [Onli- ne]. Available: https://www.elastic.co/guide/en/elasticsearch/reference/current/ query-dsl-multi-match-query.html

[34] “Nodejs,” accessed: 2017-04-28. [Online]. Available: https://nodejs.org/en/ [35] “Om systembolaget,” accessed: 2017-04-02. [Online]. Available: https://www.

systembolaget.se/om-systembolaget/om-foretaget/korta-fakta/

[36] “React,” accessed: 2017-04-28. [Online]. Available: https://facebook.github.io/ react/

[37] “React componets,” accessed: 2017-04-28. [Online]. Available: https://facebook. github.io/react/docs/components-and-props.html

[38] “Restful,” accessed: 2017-05-06. [Online]. Available: https://en.wikipedia.org/ wiki/Representational state transfer

[39] “search-personalization-user-experience,” accessed: 2017-04-09. [On- line]. Available: https://searchenginewatch.com/sew/opinion/2118126/ search-personalization-user-experience

[40] “similarweb, website ranking,” accessed: 2017-04-02. [Online]. Available: https://www.similarweb.com/website/systembolaget.se#overview

[41] “Solr,” accessed: 2017-05-10. [Online]. Available: http://lucene.apache.org/solr/ [42] “solr vs elasticsearch,” accessed: 2017-04-22. [Online]. Available: https://www.

searchtechnologies.com/blog/solr-vs-elasticsearch-top-open-source-search [43] “Solr vs elasticsearch,” accessed: 2017-04-22. [Online]. Available: https:

//logz.io/blog/solr-vs-elasticsearch/

[44] “Standard analyzer,” accessed: 2017-05-14. [Online]. Avai- lable: https://www.elastic.co/guide/en/elasticsearch/reference/current/ analysis-standard-analyzer.html

Referenser

[45] “Stop token filter,” accessed: 2017-05-15. [Online]. Available: https://www. elastic.co/guide/en/elasticsearch/reference/current/analysis-stop-tokenfilter.html [46] “Systembolaget, s¨alja med ansvar,” accessed: 2017-04-

02. [Online]. Available: https://www.systembolaget.se/vart-uppdrag/ salja-med-ansvar-sa-jobbar-vi-pa-systembolaget/

[47] “Virtual dom,” accessed: 2017-05-30. [Online]. Available: https://www. accelebrate.com/blog/the-real-benefits-of-the-virtual-dom-in-react-js/

[48] “What is a search engine?” accessed: 2017-04-23. [Online]. Available: http://www.webopedia.com/TERM/S/search engine.html

[49] “What is an index,” accessed: 2017-05-06. [Online]. Available: https://www. elastic.co/blog/what-is-an-elasticsearch-index

[50] “What is relevance?” accessed: 2017-06-01. [Online]. Available: https://www. elastic.co/guide/en/elasticsearch/guide/current/relevance-intro.html

[51] “Dell.com,” 2016, accessed: 2017-04-02. [Online]. Available: https://www.elastic. co/use-cases/dell-com

[52] “Http access control (cors),” 2017, accessed: 2017-04-02. [Online]. Available: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access control CORS [53] A. Accomazzo, A. Lerner, N. Murray, C. Allsopp, D. Gutman, and T. McGinnis,

Fullstack React The complete guide to ReactJS and friends. San Francisco, Ca- lifornia, USA: Fullstack.io, 2017.

[54] R. Kuc and M. Rogizinksi, Elasticsearch Server, 2nd ed. Birmingham, UK: Packt Publishing, 2014.

[55] J. Vanderzyden, “What is elasticsearch,” 2016, accessed: 2017-04-02. [Online]. Available: https://qbox.io/blog/what-is-elasticsearch

Related documents