Relevantie zoekresultaten ElasticSearch

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 06-10 11:28
We hebben een tijdje Algolia gebruikt om te zoeken door onze klanten/orders/etc., dit werkt perfect. Enige puntje was dat we de 10k records al snel aantikten waarbij je meteen van gratis naar $35 per maand gaat. Ook nog geen ramp, maar gezien de AVG en andere redenen leek het een goed idee om het zoeken terug naar de webserver te halen. Dus... ElasticSearch geïnstalleerd en daarmee aan de slag gegaan.

Echter kan ik niet helemaal een goede afstelling vinden, waarmee de resultaten net zo goed zijn als wat Algolia altijd voor ons deed. Dat het nooit zo goed werkt als Algolia zelf kan ik me voorstellen, maar een beetje in de buurt komen zou leuk zijn.

Op dit moment levert zoeken op klant 'Lorem' (niet letterlijk) de volgende resultaten op:

- Dorem
- Lorem
- Lipsum

Waarbij het resultaat met de exacte klantnaam niet als eerste resultaat naar voren komt.

Index configuratie
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'analysis' => [
    'filter' => [
        'ngram_filter' => [
            'type' => 'ngram',
            'min_gram' => 3,
            'max_gram' => 3,
        ],
        'edge_ngram_filter' => [
            'type' => 'edge_ngram',
            'min_gram' => 2,
            'max_gram' => 12,
        ],
        'snowball_filter' => [
            'type' => 'snowball',
            'language' => 'Dutch',
        ],
    ],
    'analyzer' => [

        'customer_name_analyzer' => [
            'type' => 'custom',
            'tokenizer' => 'standard',
            'filter' => [
                'lowercase',
                'asciifolding',
                'edge_ngram_filter',
            ],
        ],

        'ngram_analyzer' => [
            'type' => 'custom',
            'tokenizer' => 'standard',
            'filter' => [
                'lowercase',
                'asciifolding',
                'snowball_filter',
                'ngram_filter',
            ],
        ],
    ],
],


Mapping
code:
1
2
3
4
5
6
7
8
9
10
'properties' => [
    'id' => [
        'type' => 'integer',
        'index' => false,
    ],
    'name' => [
        'type' => 'text',
        'analyzer' => 'customer_name_analyzer',
    ],
],


Search rules
code:
1
2
3
4
5
6
7
'must' => [
    'multi_match' => [
        'query' => $this->builder->query,
        'fields' => ['name'],
        'minimum_should_match' => '75%',
    ]
],


---

Naast dit probleem lijkt ook zoeken met de `ngram_analyzer` niet altijd lekker te werken. Stel je hebt een order record: id, name, customer_name. Dan wil je dat zoeken op <klantnaam> <deel ordernaam> de resultaten van die klant bovenaan zet, dat werkt, maar vervolgens komen alle orders van die klantbovenaan te staan, ipv. alleen orders van die klant met <deel ordernaam>.

Kortom; veel ongerelateerde zoekresultaten! Heeft er iemand een beetje inzicht in hoe dit wat beter afgesteld kan worden? Ik kan weinig concreets vinden op internet, vooral oude voorbeelden en verder alleen losse onderdelen terwijl ik volgens mij een combinatie van bepaalde analyzers/rules nodig heb.

Beste antwoord (via TheNephilim op 29-03-2018 14:09)


  • eekhoorn12
  • Registratie: Februari 2006
  • Niet online
TheNephilim schreef op maandag 26 maart 2018 @ 10:40:
[...]

De Scoring Theory zal ik nog eens bekijken. Die explain gebruik ik tussendoor steeds wel, maar het probleem zit vooral in het vinden van een goed query/setting/mapping/oid. Er zijn maar weinig voorbeelden te vinden online en de documentatie combineert nooit wat, waardoor ik geen idee heb hoe de verschillende 'disciplines' binnen ElasticSearch moet combineren.

Concreet voorbeeld: Klant Handelsonderneming Dijkstra met order Briefpapier en enveloppen. Zoeken op "dijkstra briefpapier", dan wil ik die order bovenaan zien staan.
Het ligt er ook heel erg aan hoe ver je wilt gaan met het afvangen van typefouten, als dat totaal niet van belang is zou ik ngrams helemaal weg laten. Wil je daar wel wat aan doen, kan je ook bijvoorbeeld naar edge-ngrams kijken.

Bij mij op het werk zijn we helemaal afgestapt van ngrams en overgegaan op gewone analyzers (ik werk bij een vacature website).

Voorbeeld van onze mappings/settings:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
analysis:
  analyzer:
    dutch_analyzer:
      type: custom
      char_filter:
        - html_strip
      tokenizer: standard
      filter:
        - standard
        - lowercase
        - dutch_stop
        - dutch_snowball
        - asciifolding
  filter:
    dutch_stop:
      type: stop
      stopwords: _dutch_
    dutch_snowball:
      type: snowball
      language: Kp


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
job_opening:
  properties:
    title_nl:
      type: string
      analyzer: dutch_analyzer
    short_desc_nl:
      type: string
      analyzer: dutch_analyzer
    keywords_nl:
      type: string
      analyzer: dutch_analyzer
    combined_description_nl:
      type: string
      analyzer: dutch_analyzer


En dan als zoekopdracht gebruiken wij het volgende voor de keyword matching (zoekopdracht op: "bijbaan marketing"):
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
   
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "match": {
                  "combined_description_nl": {
                    "minimum_should_match": "2<75% 6<50%",
                    "query": "bijbaan marketing"
                  }
                }
              }
            ],
            "should": [
              {
                "match": {
                  "title_nl": {
                    "boost": 3,
                    "query": "bijbaan marketing"
                  }
                }
              },
              {
                "match": {
                  "short_desc_nl": {
                    "boost": 2,
                    "query": "bijbaan marketing"
                  }
                }
              },
              {
                "match": {
                  "keywords_nl": {
                    "boost": 0.1,
                    "query": "bijbaan marketing"
                  }
                }
              }
            ],
            "minimum_should_match": 0
          }
        }
      ]
    }
  }
}


Toen wij hiervoor nog gebruik maakte van ngrams kregen wij ook wel regelmatig hele rare resultaten terug omdat we op een deel van een woord matchte wat eigenlijk totaal niet gezocht werd.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 19:09
Het probleem met de ngrams is een kwestie van configureren. Als je de hele klantnaam erin gooit kan je inderdaad een vreemde score krijgen, want dit is eigenlijk meer bedoeld voor "search while you type".

De index wordt namelijk gemaakt met stukjes van 2, 3, 4... 12 letters. Lorem zal een 5-gram netjes matchen, maar de andere ngrams niet. Volgens mij is de score daarom niet altijd zoals je verwacht.

Voor het tweede issue; gebruik je daar ook ern multi-match query? Die is namelijk bedoeld on *dezelfde query* in meerdere velden tegelijk te zoeken. Wat je nodig hebt is een booelean query om klantnaam en (deel) ordernaam in hun eigen respectievelijke velden te zoeken:

https://www.elastic.co/gu...query-dsl-bool-query.html

https://www.elastic.co/gu...nt/combining-filters.html

Let ook op het verschil tussen filters en queries; filters bepalen met harde ja/nee of document in de resultaten komen, terwijl queries alleen de score beïnvloeden. Voor het weglaten van orders heb je dus een filter nodig.

[ Voor 17% gewijzigd door Morrar op 23-03-2018 22:43 ]


Acties:
  • 0 Henk 'm!

  • BramV
  • Registratie: Augustus 2007
  • Laatst online: 12:52
waarom niet een good old (my) sql database... ?

Acties:
  • +1 Henk 'm!

  • eekhoorn12
  • Registratie: Februari 2006
  • Niet online
Hoe elasticsearch soms resultaten bepaald is soms wel even wat na kijk werk, wat goed kan helpen met het verklaren is de explain te gebruiken die ze bieden, dan geeft elasticsearch aan voor ieder resultaat hoe het tot zijn score is gekomen, https://www.elastic.co/gu...arch-request-explain.html.

Een belangrijk ding om hierbij te onthouden is de formule die elasticsearch gebruikt voor het berekenen van een match score https://www.elastic.co/gu...rrent/scoring-theory.html.


Daarnaast is mijn ervaring dat ngrams niet altijd de beste oplossing zijn, dit komt omdat je daarbij heel veel partiële matches kan krijgen omdat regelmatig toch wel een woord matched met een deel van een ander woord in dit lijdt dan tot vage resultaten.
BramV schreef op zaterdag 24 maart 2018 @ 14:56:
waarom niet een good old (my) sql database... ?
Dat ligt aan de specifieke use case, maar met een ElasticSearch database heb je veel meer mogelijkheden tot full text search

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 06-10 11:28
Morrar schreef op vrijdag 23 maart 2018 @ 22:29:
Het probleem met de ngrams is een kwestie van configureren. Als je de hele klantnaam erin gooit kan je inderdaad een vreemde score krijgen, want dit is eigenlijk meer bedoeld voor "search while you type".

De index wordt namelijk gemaakt met stukjes van 2, 3, 4... 12 letters. Lorem zal een 5-gram netjes matchen, maar de andere ngrams niet. Volgens mij is de score daarom niet altijd zoals je verwacht.
We gebruiken het als een 'search while you type' functie, maar de ene bedrijfsnaam vul je volledig in en de andere misschien deels. Bijv. "Handelsonderneming Dijkstra", dan zoek je snel op "Dijkstra", maar er zijn ook klanten met korte 'unieke' namen waar je met de hele naam zoekt.

Maar zoals ik het begrijp is daar niet echt een oplossing voor dus. Het mooiste zou zijn dat als je zoekt op "Dijkstra" in vorig voorbeeld, je records met die exacte 'term' erin hoger kunt scoren. Ik ben er alleen nog niet achter hoe.
Voor het tweede issue; gebruik je daar ook ern multi-match query? Die is namelijk bedoeld on *dezelfde query* in meerdere velden tegelijk te zoeken. Wat je nodig hebt is een booelean query om klantnaam en (deel) ordernaam in hun eigen respectievelijke velden te zoeken:
Toevallig gebruik ik daar inderdaad ook multi_match. Er is echter maar één veld. Voor klanten kun je op bedrijfsnaam en de contactpersonen zoeken. Heb de code dus iets uitgedund uiteindelijk, maar de resultaten blijven problemen geven zoals beschreven.
https://www.elastic.co/gu...query-dsl-bool-query.html

https://www.elastic.co/gu...nt/combining-filters.html

Let ook op het verschil tussen filters en queries; filters bepalen met harde ja/nee of document in de resultaten komen, terwijl queries alleen de score beïnvloeden. Voor het weglaten van orders heb je dus een filter nodig.
Oké dat ga ik nog eens goed bekijken dan, al blijft het een beetje hocus-pocus dat ElasticSearch :o
BramV schreef op zaterdag 24 maart 2018 @ 14:56:
waarom niet een good old (my) sql database... ?
Die hebben we! Bepaalde velden van klanten/orders/ed. sturen we ook naar de ElasticSearch instance. Zoeken in MySQL is leuk en aardig, partial matching wil ook nog wel met full text indexes (alleen MyISAM toch?), maar zoeken met typfouten en dergelijke wil eigenlijk niet meer. Er is daarnaast weinig in te stellen, de snelheid is niet zo geweldig en ElasticSearch is er voor gebouwd, MySQL niet.
eekhoorn12 schreef op zondag 25 maart 2018 @ 22:33:
Hoe elasticsearch soms resultaten bepaald is soms wel even wat na kijk werk, wat goed kan helpen met het verklaren is de explain te gebruiken die ze bieden, dan geeft elasticsearch aan voor ieder resultaat hoe het tot zijn score is gekomen, https://www.elastic.co/gu...arch-request-explain.html.

Een belangrijk ding om hierbij te onthouden is de formule die elasticsearch gebruikt voor het berekenen van een match score https://www.elastic.co/gu...rrent/scoring-theory.html.

Daarnaast is mijn ervaring dat ngrams niet altijd de beste oplossing zijn, dit komt omdat je daarbij heel veel partiële matches kan krijgen omdat regelmatig toch wel een woord matched met een deel van een ander woord in dit lijdt dan tot vage resultaten.
De Scoring Theory zal ik nog eens bekijken. Die explain gebruik ik tussendoor steeds wel, maar het probleem zit vooral in het vinden van een goed query/setting/mapping/oid. Er zijn maar weinig voorbeelden te vinden online en de documentatie combineert nooit wat, waardoor ik geen idee heb hoe de verschillende 'disciplines' binnen ElasticSearch moet combineren.

Concreet voorbeeld: Klant Handelsonderneming Dijkstra met order Briefpapier en enveloppen. Zoeken op "dijkstra briefpapier", dan wil ik die order bovenaan zien staan.

Acties:
  • +1 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 19:09
Voor het maken van queries is deze tool wel handig:
http://bodybuilder.js.org/

Als je daar het volgende invult:

code:
1
2
3
4
5
6
bodybuilder()
        .query('match', 'klant', 'dijkstra')
        .query('match', 'order', 'briefpapier')
        .filter('term', 'klant', 'dijkstra')
        .filter('term', 'order', 'briefpapier')
        .build()


Dan zorgen de query statements ervoor dat de score wordt bepaald door "dijkstra" en "briefpapier". De twee filters zorgen ervoor dat alleen resultaten met "dijkstra" en "briefpapier" terugkomen. (je zou er bijvoorbeeld ook gewoon een limiet op kunnen zetten en de filters weglaten).

De resulterende query is dan:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "query": {
    "bool": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "klant": "dijkstra"
              }
            },
            {
              "term": {
                "order": "briefpapier"
              }
            }
          ]
        }
      },
      "must": [
        {
          "match": {
            "klant": "dijkstra"
          }
        },
        {
          "match": {
            "order": "briefpapier"
          }
        }
      ]
    }
  }
}


Ik heb hier even geen ElasticSearch paraat om te testen, maar hopelijk helpt dit je op weg :)

Wat wel een dingetje is: je weet niet welke woorden in klant en welke in order moeten worden opgezocht. Beste zou daarom waarschijnlijk zijn om beide woorden in beide velden op te zoeken (dus "briefpapier" ook in klant en "dijkstra" ook in order via multi-match). Als je filters gebruikt, moeten deze daar ook rekening mee houden (bv dat maar 1 van beiden hoeft te matchen).

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • eekhoorn12
  • Registratie: Februari 2006
  • Niet online
TheNephilim schreef op maandag 26 maart 2018 @ 10:40:
[...]

De Scoring Theory zal ik nog eens bekijken. Die explain gebruik ik tussendoor steeds wel, maar het probleem zit vooral in het vinden van een goed query/setting/mapping/oid. Er zijn maar weinig voorbeelden te vinden online en de documentatie combineert nooit wat, waardoor ik geen idee heb hoe de verschillende 'disciplines' binnen ElasticSearch moet combineren.

Concreet voorbeeld: Klant Handelsonderneming Dijkstra met order Briefpapier en enveloppen. Zoeken op "dijkstra briefpapier", dan wil ik die order bovenaan zien staan.
Het ligt er ook heel erg aan hoe ver je wilt gaan met het afvangen van typefouten, als dat totaal niet van belang is zou ik ngrams helemaal weg laten. Wil je daar wel wat aan doen, kan je ook bijvoorbeeld naar edge-ngrams kijken.

Bij mij op het werk zijn we helemaal afgestapt van ngrams en overgegaan op gewone analyzers (ik werk bij een vacature website).

Voorbeeld van onze mappings/settings:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
analysis:
  analyzer:
    dutch_analyzer:
      type: custom
      char_filter:
        - html_strip
      tokenizer: standard
      filter:
        - standard
        - lowercase
        - dutch_stop
        - dutch_snowball
        - asciifolding
  filter:
    dutch_stop:
      type: stop
      stopwords: _dutch_
    dutch_snowball:
      type: snowball
      language: Kp


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
job_opening:
  properties:
    title_nl:
      type: string
      analyzer: dutch_analyzer
    short_desc_nl:
      type: string
      analyzer: dutch_analyzer
    keywords_nl:
      type: string
      analyzer: dutch_analyzer
    combined_description_nl:
      type: string
      analyzer: dutch_analyzer


En dan als zoekopdracht gebruiken wij het volgende voor de keyword matching (zoekopdracht op: "bijbaan marketing"):
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
   
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "match": {
                  "combined_description_nl": {
                    "minimum_should_match": "2<75% 6<50%",
                    "query": "bijbaan marketing"
                  }
                }
              }
            ],
            "should": [
              {
                "match": {
                  "title_nl": {
                    "boost": 3,
                    "query": "bijbaan marketing"
                  }
                }
              },
              {
                "match": {
                  "short_desc_nl": {
                    "boost": 2,
                    "query": "bijbaan marketing"
                  }
                }
              },
              {
                "match": {
                  "keywords_nl": {
                    "boost": 0.1,
                    "query": "bijbaan marketing"
                  }
                }
              }
            ],
            "minimum_should_match": 0
          }
        }
      ]
    }
  }
}


Toen wij hiervoor nog gebruik maakte van ngrams kregen wij ook wel regelmatig hele rare resultaten terug omdat we op een deel van een woord matchte wat eigenlijk totaal niet gezocht werd.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 06-10 11:28
eekhoorn12 schreef op maandag 26 maart 2018 @ 13:51:
[...]


Het ligt er ook heel erg aan hoe ver je wilt gaan met het afvangen van typefouten, als dat totaal niet van belang is zou ik ngrams helemaal weg laten. Wil je daar wel wat aan doen, kan je ook bijvoorbeeld naar edge-ngrams kijken.

Bij mij op het werk zijn we helemaal afgestapt van ngrams en overgegaan op gewone analyzers (ik werk bij een vacature website).

[...]

Toen wij hiervoor nog gebruik maakte van ngrams kregen wij ook wel regelmatig hele rare resultaten terug omdat we op een deel van een woord matchte wat eigenlijk totaal niet gezocht werd.
Bedankt voor het delen van je setup! :o Met jou opzet krijg ik best wel mooie resultaten, maar voor de ordernaam moet ik haast wel een ngram filter gebruiken. Zoeken op "kladblok" moet namelijk ook resultaten met "kladblokjes" in de ordernaam weergeven.

Daarnaast heb ik nog een issue met de volgende data ordernaam: "Kladblokjes" en klantnaam: "Deco Diensten", zoeken op "kladblokjes" levert gewenste resultaat op, maar zoeken op "kladblokjes deco" weer niet... :'( Ook niet met een edge_ngram filter.

Edit: Dit lijk ik te kunnen oplossen door 'minimum_should_match' => '2<75% 6<50%', uit te zetten. Zal eens kijken wat daarvoor een goede instelling is.

[ Voor 6% gewijzigd door TheNephilim op 26-03-2018 16:05 ]


Acties:
  • +1 Henk 'm!

  • eekhoorn12
  • Registratie: Februari 2006
  • Niet online
TheNephilim schreef op maandag 26 maart 2018 @ 15:58:
[...]


Bedankt voor het delen van je setup! :o Met jou opzet krijg ik best wel mooie resultaten, maar voor de ordernaam moet ik haast wel een ngram filter gebruiken. Zoeken op "kladblok" moet namelijk ook resultaten met "kladblokjes" in de ordernaam weergeven.

Daarnaast heb ik nog een issue met de volgende data ordernaam: "Kladblokjes" en klantnaam: "Deco Diensten", zoeken op "kladblokjes" levert gewenste resultaat op, maar zoeken op "kladblokjes deco" weer niet... :'( Ook niet met een edge_ngram filter.

Edit: Dit lijk ik te kunnen oplossen door 'minimum_should_match' => '2<75% 6<50%', uit te zetten. Zal eens kijken wat daarvoor een goede instelling is.
Dat kan kloppen. De 'minimum_should_match' => '2<75% 6<50%', betekent dat als het 0 t/m 2 woorden zijn alle woorden moeten matchen, 3 t/m 6 woorden moet 75% van de woorden matchen en als het 7 of meer woorden zijn moet 50% van de woorden matchen. Dit is gedaan zodat mensen die met heel veel woorden zoeken toch sneller resultaten terug krijgen.

Als je dit dan toepast in jou situatie gaat dat inderdaad niet lukken omdat beide velden maar 1 woord bevat.

Waar je nog naar kan kijken is de Dutch snowball te vervangen voor de Kp, die schijnt wat beter te zijn in het nederlands https://github.com/snowballstem/snowball/issues/1

[ Voor 8% gewijzigd door eekhoorn12 op 26-03-2018 19:30 ]


Acties:
  • +1 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Nu online

Salandur

Software Engineer

Mijn ervaring met elasticsearch is dat het altijd beter is om meestal een andere search analyzer te gebruiken dan de index analyzer.

In onze situatie gebruiken we de egde ngram analyzer om namen in de index te krijgen. We gebruiken een aangepaste standard analyzer voor het zoeken. Anders wordt dezelfde analyzer gebruikt bij het zoeken en dat levert inderdaad vreemde resultaten op.

Om je voorbeeld aan te halen met de ngram analyzer, Dorem in de index en zoeken op Lorem:
code:
1
2
# In de index
dor, ore, rem


code:
1
2
# zoekt naar
lor, ore, rem

Zoals je ziet zal dit matchen voor 2 van de 3 zoektermen.

Bij het gebruik van edge ngram hoef je niet deze analyze ook te doen als je zoekt. De index zal immers l, lo, lor, lore, lorem bevatten. Alleen zoeken naar lorem zal al het gewenste resultaat opleveren.

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 06-10 11:28
Mijn conclusie tot zover is dat we het niet zo netjes krijgen als wat Algolia biedt. Met hulp van jullie zijn mijn inzichten in ElasticSearch wel verbeterd. We hebben wat zoekopdrachten uitgevoerd en de resultaten vastgelegd, eens kijken in hoeverre we kunnen verbeteren na de aanpassingen. Klantnaam niet meer ngram zal even wennen zijn, gezien je voorheen kon typen met typfouten, ook in klantnamen.

Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Nu online

Salandur

Software Engineer

Je zou wat uit kunnen proberen met een specifieke stemmer en synonym filter, eventueel in combinatie met de language analyzer geconfigureerd voor Nederlands (https://www.elastic.co/gu...alysis-lang-analyzer.html)

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
TheNephilim schreef op donderdag 29 maart 2018 @ 14:13:
Mijn conclusie tot zover is dat we het niet zo netjes krijgen als wat Algolia biedt.
Had je serieus iets anders verwacht?

Uiteindelijk kan je het wel net zo netjes (zo niet netter) krijgen als wat Algolia biedt, alleen tja zonder ervaring kom je in 2 weken niet zo ver als je gewoon een professionele dienst probeert na te maken.

Zou het je lukken dan zou Algolia geen businessmodel hebben.

In zo'n product als Algolia zit al gauw simpelweg een paar duizend manuur. Je kan betere resultaten verkrijgen als je een short-cut bedenkt die voor jou van toepassing is, maar anders moet je toch echt die duizenden manuren erin steken.
Pagina: 1