Autor Zpráva
PetraPP
Profil
Dnes již třetí dotaz :( ... prohledávám tabulku detail za pomocí LIKE %slovo% a očekávala jsem, že vyhledávání bude více flexibilnější. Pokud zadám podprsenka, tak to nenajde například podprsenky, kde je na konci změna v samohlásce.
Jak docílím toho, aby to našlo i podprsenky ?
lionel messi
Profil
SELECT * FROM `tabulka` WHERE `produkt` LIKE '%podprsenk_' — nájde aj slovo podprsenky, podprsenku, podprsenke, ale nie podprsenkám
SELECT * FROM `tabulka` WHERE `produkt` LIKE '%podprsenk%' — nájde všetko, čo 1. dotaz + podprsenkám, nenájde slovo podprsenek, na to by bolo nutné zadať asi SELECT * FROM `tabulka` WHERE `produkt` LIKE '%podprsen%'

Ťažko vykúzliť niečo flexibilné týmto spôsbom, v prípade vyšších nárokov by som skúsil niečo podobné: Fulltextové vyhledávání v MySQL

Dnes už moja druhá odpoveď na váš dotaz, bohužiaľ asi nepoteší tak ako tá prvá. :-(
Tori
Profil
PetraPP:
Dala by se napsat funkce, která by z vyhledávaného slova odstranila samohlásku na konci, to je jednoduché (rtrim nebo preg_replace). Odstranění souhlásky z kořene u slov, kde dochází při skloňování ke změně v kmeni ("podprsenka" --> "podprsen", ale "matný" --> "matn"), by vyžadovalo konzultaci z české morfologie. Odstranění přípony, která nekončí samohláskou ("podprsenkám") by bylo minimálně stejně komplikované.
PetraPP
Profil
Existuje i hledání v samotném string? Řekněme, že budu mít větu: "Babička s dědou šli do Tesca nakoupit rohlíky, chleba a máslo.", ve které bych potřebovala prohledat slova a porovnávat je se slovy uloženými v mySQL.

Budu mít například tyto klíčové slova v mySQL s číslem id:
- id 2: maminka
- id 14: dítě
- id 8: babička s dědou

Potřebovala bych tedy prohledat text "Babička s dědou šli do Tesca..." a potřebovala bych na základě prohledání textu za pomocí klíčových slov v mySQL tento text prohledat a nejlépe k danému textu přiřadit (musí přiřadit script) id 8: babička s dědou.

Jak toto mohu udělat?
Alphard
Profil
Nejvhodnější bude postupně procházet jednotlivá klíčová slova a každé samostatně testovat a zpracovat výsledky. Napsat ten cyklus bude otázka 5 řádků, horší bude samotné porovnání (ma-li se řešit skloňování apod.).
juriad
Profil
PetraPP:
Pokud je server tvůj, šlo by ještě nasadit Lucene nebo ElasticSearch. To by řešilo skloňování a češtinu obecně, stejně jako výkonostní problém při iteraci, kterou nabízí Alphard v případě, kdy je počet klíčových slov v řádů tisíců.

Jde ti o jednorázové přiřazení klíčových slov (bude probíhat málo často, třeba jednou denně, nebo když se náhodou přidá článek/produkt), nebo vyžaduješ interakci - uživatel něco zadá do tvého vyhledávače a ty identifikuješ klíčová slov a na základě nich doporučíš články/produkty. Tyto způsoby použití se velice liší nároky na výkon a spolehlivost/přesnost.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: