Full textové vyhladávanie cez Context

KristianSubweb
Člen | 144
+
0
-

Ahojte chcel by som sa opýtať či mi neviete poradiť ako spraviť cez Nette/Context Fulltextové vyhladávanie? Aktuálne s tým bojujem a moc neviem ako začať. Neriešili ste to už niekto najlepšie nad viacerými tabulkami súčasne. Nepotrebujem riešil žiaden Elastic ani nič podobné len tak základnejšie fulltextové vyhladávanie.

Chcem to riešiť prostredníctvom MATCH a AGAINST.

Ak by ste mi vedeli poslať nejakú malú inšpiráciu bol by som veľmi vďačný.

Dik za odpovede.

KristianSubweb
Člen | 144
+
0
-

Na takomto teste si to demoštrujem:

$table = $this->db->table("contact")
           ->select("contact.name, contact.surname, contact.phone_number, :bikes.brand, :bikes.model")
            ->where("
            MATCH (contact.name, contact.surname, contact.phone_number) AGAINST (? IN BOOLEAN MODE)
            OR
            MATCH (:bikes.brand, :bikes.model) AGAINST (? IN BOOLEAN MODE)
            ", [$searchTerm, $searchTerm])
            ->fetchAll();

Daľší problém je v tom že to vie nájsť len celý konkrétny výraz.

A ďalší problém vidím v optimalizácii tej query :/

Editoval KristianSubweb (29. 3. 2021 20:45)

Stuler
Člen | 1
+
-1
-

Ahoj,

ja som siel touto cestou:

  1. v presenteri som si vytvoril komponentu SearchForm, kde zadavam hladany vyraz „term“, vystupom je bud $values[‚term‘] alebo null, konkretne $this->redirect(„this“, [„term“ ⇒ $values[‚term‘] ? $values[‚term‘] : null]
  2. v metode render() som si ziskal z URL parameter ‚term‘, podla ktoreho som si nechal priniest vsetky vysledky databazovym dotazom

    $searchTerm = $this->getParameter(„term“);

    if ($searchTerm) { …

Dufam, ze je tento postup ako-tak zrozumitelny.