Autor | Zpráva | ||
---|---|---|---|
PetraPP Profil |
#1 · Zasláno: 24. 10. 2014, 20:30:55
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 |
#3 · Zasláno: 24. 10. 2014, 22:28:05
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 |
#4 · Zasláno: 25. 10. 2014, 00:01:19
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 |
#5 · Zasláno: 25. 10. 2014, 00:52:35
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 |
#6 · Zasláno: 25. 10. 2014, 02:05:23
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. |
||
Časová prodleva: 10 let
|
0