Momenteel bezig met een POC van een autocomplete / zoek functie
Doel:
zoeken naar een contactpersoon en/of een product en als autocomplete hint teruggeven in het HTML formulier.
2 Eloquent models: Product & Relatie
de relaties kunnen zijn:
1) Relatie (1) + Product (N+1)
2) Relatie (1) zonder Product (null)
2) Product (1) zonder Relatie (null)
Optie 1: Gefilterde resultaat (indien gevonden) klik je aan op basis van Product.ID kan het formulier ingevuld en opgeslagen worden.
Optie 2: geen Product is gevonden, maar wel een Relatie kan je een Product aanmaken
Optie 3: geen Relatie gevonden, maar wel een product kan je een relatie aanmaken
(Dat is verdere FrontEnd logica en staat hier los van)
Huidige opzet
via de (onderstaande) package vul ik een ES index, waarbij ik nu Relatie als leidend heb. Hierbij geef ik in de model een makeAllSearchableUsing with('products'). In elk ES document komt dan een output als:
Probleem
In eerste instantie is dit deels prima; echter als ik als zoekterm YYY opgeef wil je uiteraard alleen de Relatie met Product.internal_code = YYY111 terug krijgen. (en niet met beide producten!)
En daar gaat het compleet mis!
relevantie software c.q. aanvullende packages
Waar maak ik de denkfout in dit geval?
Ik ben 'bang' dat ik een verkeerde index opzet heb en deze (volledig) los moet gaan trekken van:
1. de package opzet, welke niet goed/slecht om kan gaat relaties c.q. de index mapping incorrect is;
2. de basis opzet van de models;
Doel:
zoeken naar een contactpersoon en/of een product en als autocomplete hint teruggeven in het HTML formulier.
2 Eloquent models: Product & Relatie
de relaties kunnen zijn:
1) Relatie (1) + Product (N+1)
2) Relatie (1) zonder Product (null)
2) Product (1) zonder Relatie (null)
Optie 1: Gefilterde resultaat (indien gevonden) klik je aan op basis van Product.ID kan het formulier ingevuld en opgeslagen worden.
Optie 2: geen Product is gevonden, maar wel een Relatie kan je een Product aanmaken
Optie 3: geen Relatie gevonden, maar wel een product kan je een relatie aanmaken
(Dat is verdere FrontEnd logica en staat hier los van)
Huidige opzet
via de (onderstaande) package vul ik een ES index, waarbij ik nu Relatie als leidend heb. Hierbij geef ik in de model een makeAllSearchableUsing with('products'). In elk ES document komt dan een output als:
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
| -document: ElasticAdapter\Documents\Document {#1433 ▼ -id: "14" -content: array:17 [▼ "id" => 14 "company" => "Tweakers BV" "firstname" => "Crazy" "middlename" => null "lastname" => "Twealker" "street" => "Tweakerslaan" "number" => "69" "addition" => null "postcode" => "1234 AA" "city" => "Specialcity" "phonenumber" => null "mobilenumber" => "0123456789" "email" => "@gmail.com" "product" => array:2 [▼ 0 => array:7 [▼ "id" => 5 "internal_code" => "XXX555" "code" => "0234" "relation_id" => 14 ] 1 => array:7 [▼ "id" => 6 "internal_code" => "YYY111" "code" => "1234" "relation_id" => 14 ] ] ] } |
Probleem
In eerste instantie is dit deels prima; echter als ik als zoekterm YYY opgeef wil je uiteraard alleen de Relatie met Product.internal_code = YYY111 terug krijgen. (en niet met beide producten!)
En daar gaat het compleet mis!

relevantie software c.q. aanvullende packages
- https://github.com/babenkoivan/elastic-scout-driver
- https://github.com/babenkoivan/elastic-scout-driver-plus/
- Laravel 8.x
- Elastichsearch 7.9 (docker)
Waar maak ik de denkfout in dit geval?
Ik ben 'bang' dat ik een verkeerde index opzet heb en deze (volledig) los moet gaan trekken van:
1. de package opzet, welke niet goed/slecht om kan gaat relaties c.q. de index mapping incorrect is;
2. de basis opzet van de models;
12,85kWp - ZB 7,5m2/400l - 5kW Pana H WP (CV&SWW) - 13,8kWh accu