Zadejte hledaný výraz...

Hledání celých slov ve sloupci

mcever4
verified
rating uzivatele
14. 2. 2019 01:18:30
Ahoj, potřeboval bych poradit. Nevím jak napsat dotaz aby vyhledal ve sloupci celá slova. Příklad
mám v tabulce názvy
Motor
Motorek stěračů
Octavia motor
Motor 1,6 TDI
Motorek stahovačky
Kapota motoru
pokud napíšu
tak mi to vyhledá všechny řádky
pokud napíšu
tak mi to vyhledá první řádek
pokud napíšu
tak mi to vyhledá první řádek
jak mám napsat dotaz, aby vyhledal pouze 1,3,4 řádek, kde je v názvu slovo motor jako samostatné slovo.
14. 2. 2019 01:18:30
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388256
martinzsa
verified
rating uzivatele
(1 hodnocení)
14. 2. 2019 02:57:44
fulltext search
vytvor si nad stlpcom/stlpcami v torych chces hladat fulltext index a ootom uz query mas
na klasicky like zabudni ten to spravit nevie musel by si mat:
ale to by si tu DB zabil lebo nevies pouzit index a trvalo by to strasne dlho
14. 2. 2019 02:57:44
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388255
Nejak takhle?
14. 2. 2019 03:03:50
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388254
TomasX
verified
rating uzivatele
(4 hodnocení)
14. 2. 2019 06:22:21
rozděl si ty texty na jednotlivá slova a ulož do relačni tabulky, pak můžeš nad tím sloupcem udělat index a databáze ti bude vděčná.
Použij fulltext či like (viz první odpověď; částečně dotaz totiž používá indexy) a až v php odfiltruj výsledky, kde je hledaný výraz součástí slova.
Řešení od vdusek je také funkční, chce jen dát pozor jak bude rozsáhlá databáze a samozřejmě si ten regulár vyladit, teď třeba nenajde “Motor!”. Na to bys musel poskytnou více textů.
O jaký počet textů se jedná?
14. 2. 2019 06:22:21
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388253
mcever4
verified
rating uzivatele
14. 2. 2019 09:53:22
Díky za rady,
databáze má jen 200 tis záznamů, což zas není moc, ale právě hledání tohoto typu vždy tu DB uzemní.
tabulka obsahuje sloupce název, znacka, model, motorizace, motor_typ, motor_kod, rok_vyroby ....... a tak ještě deset dalších
První pokus by vytvořit vyhledávací formulář na všechny tyto položky, což není v mobilu možné vytvořit tak aby se to vešlo na obrazovku.
Druhý pokus byl jedno vyhledávací pole po vzoru googlu :) kde uživatel může napsat cokoliv = více slovní spojení nehledě na pořadí slov.
Pak řetězec rozdělím dle mezer na jednotlivá slova, vyhodím slova, "nad, pod, před, v, a," a další a vytvořím si pole slov.
pak skládám dotaz a jednotlivá slova hledám postupně v těch deseti sloupcích.
pokud mi ale někdo vyhledá písmeno "e" pak to najde všechna slova obsahující e a taky to trvá dlouho.
přemýšlím nad variantou, že vytvořím nový sloupec, kam seskupím všechen obsah ze sloupců ve kterých vyhledávám a budu hledat jen v jednom sloupci, ale jak velkou hodnotu var mám uvést když se vyhledává i popisu, kde je někdy více textu.
Ten předchozí dotaz byl spíše zaměřen zda by hledal přesněji ale když loguji slova co lidé používají pro hledání, ztrácím naději.
jako včera při testování přišel mechanik ze servisu a napsal "octavia2 lp.svetlo" a strašně se divil že se mu nic nevyhledalo :)
14. 2. 2019 09:53:22
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388252
TomasX
verified
rating uzivatele
(4 hodnocení)
14. 2. 2019 10:02:15
200 tis položek na vyhledávání přes regexp či rlike je dost, pokud to máš napojený na vyhledávací formulář, jeden robot ti usmaží celou databázi a web nebude funkční.
K tomuhle se dá vyladit mysql fulltext, ideálně slova umístit do jedné tabulky, vkládat je tam ve více variantách (s/bez diakritiky, ve zkratkách či přepsané zkratky na slova atd.), na tenhle sloupec si nastavit fulltext a poté spojovat s původní tabulkou a deduplikovat vyhledané výrazy.
Pokud máš dostupné vlastní vps/servery, elasticsearch funguje jako magie skoro sám od sebe a nejspíš i s výchozím indexerem ti poskytne to co ti dostačuje, 200 tis položek je málo a paměti nebudeš tolik potřebovat.
14. 2. 2019 10:02:15
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388251
aheadnology
verified
rating uzivatele
14. 2. 2019 12:29:24
Já vím, že se Ti to nebude líbit, ale tady k tomu teď přistupujeme moc programátorsky. Lepší je přístup UX a dát si čas analýzou, co vlastně uživatelé potřebují, chtějí a jsou schopni použít. Jenže kdo na to má? :-(
Zvlášť, když to chceš narvat na screen mobilu!
Řešením by samozřejmě bylo "chytré" hledání, kde máš dobrou databázi vozů a dílů (nejen jako seznam dílů, ale skutečně jako databáze toho, jak to i lidi zadávají, když to hledají)...
To víceméně už sám moc dobře vidíš na jediném dotazu zmíněného mechanika...
14. 2. 2019 12:29:24
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388250
mcever4
verified
rating uzivatele
14. 2. 2019 12:50:56
Napsal aheadnology;1511823
Já vím, že se Ti to nebude líbit, ale tady k tomu teď přistupujeme moc programátorsky. Lepší je přístup UX a dát si čas analýzou, co vlastně uživatelé potřebují, chtějí a jsou schopni použít. Jenže kdo na to má? :-(
Zvlášť, když to chceš narvat na screen mobilu!
Řešením by samozřejmě bylo "chytré" hledání, kde máš dobrou databázi vozů a dílů (nejen jako seznam dílů, ale skutečně jako databáze toho, jak to i lidi zadávají, když to hledají)...
To víceméně už sám moc dobře vidíš na jediném dotazu zmíněného mechanika...
databázi vozidel a dílů mám, data od uživatelů co vpisují do hledání také, problémem je, že uživatelé hledají věci pod jiným názvem a nebojí se použít zdrobněliny nebo dokonce hovorové výrazy, zkratky.
Už se dokonce přibližuji googlu :) kdy v systému aktualizuji překladové slovníky.
uživatel napíše "haupna" a systém odpoví: neměli jste namysli kapotu motoru ? někdo tomu říká "víko kufru" nebo "krycí díl motorové části"
pak s tím má člověk pracovat.
---------- Příspěvek doplněn 14.02.2019 v 12:52 ----------
Napsal TomášX;1511793
200 tis položek na vyhledávání přes regexp či rlike je dost, pokud to máš napojený na vyhledávací formulář, jeden robot ti usmaží celou databázi a web nebude funkční.
K tomuhle se dá vyladit mysql fulltext, ideálně slova umístit do jedné tabulky, vkládat je tam ve více variantách (s/bez diakritiky, ve zkratkách či přepsané zkratky na slova atd.), na tenhle sloupec si nastavit fulltext a poté spojovat s původní tabulkou a deduplikovat vyhledané výrazy.
Pokud máš dostupné vlastní vps/servery, elasticsearch funguje jako magie skoro sám od sebe a nejspíš i s výchozím indexerem ti poskytne to co ti dostačuje, 200 tis položek je málo a paměti nebudeš tolik potřebovat.
jdu nastudovat elasticsearch, zdá se to být cesta
14. 2. 2019 12:50:56
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388249
TomasX
verified
rating uzivatele
(4 hodnocení)
14. 2. 2019 12:59:26
nedávno tady o tom bylo podobné vlákno https://webtrh.cz/418659-rychly-fulltextovy-naseptavac-slov-produktu
Ano, dotaz byl programátorský, odpovědi také :). Určitě souhlasím s tím, že je potřeba jít i ze strany UX, a to v první řadě. Dělal jsem i fulltext tak, že jsem měl data přímo v php souboru a zaměřil se hlavně na to, aby to dobře hledalo přesně tak, jak uživatel očekává.
14. 2. 2019 12:59:26
https://webtrh.cz/diskuse/hledani-celych-slov-ve-sloupci/#reply1388248
Pro odpověď se přihlašte.
Přihlásit