Portál AbcLinuxu, 11. května 2025 04:29
Řešení dotazu:
Pokud máte databázi typu MySQL, ve které chcete vyhledávat, je možné spustit příkaz:
SELECT sloupce FROM tabulka WHERE sloupec LIKE '%hodnota%'
Pokud chcete hledat slova odděleně a nikoli fráze, upravte dotaz nějak takto:
SELECT sloupce FROM tabulka WHERE sloupec LIKE '%slovo%' OR sloupec LIKE '%dalsi_slovo%'
Pokud použijete metodu s rozložením na slova, je třeba zvážit následující věc. Totiž chyba v mém návrhu je ta, že si budete muset vymyslet nějaký způsob jak výstup, což je obvykle nějaké pole, seřadit podle počtu nalezených slov - v některém jsou nalezená slova tři, někde jen jedno.
Mě napadá takhle z fleku například procyklení výstupu a počítání nalezených slov, výsledek zapsat do nějakého pole (kde byste např. číslo příspěvku spojil s počtem nalezených slov), které opět procyklíte a seřadíte podle něj výstup z SQL databáze.
Důvod, proč do toho tahám další pole, je takový, že nebudete moci řadit výstup, když si nebudete jist, zda ve výstupu není ještě nějaký další příspěvek s větším počtem nalezených slov, nebo když budete potřebovat příspěvek se třemi nálezy zařadit mezi příspěvky se čtyřmi nálezy a dvěma nálezy.
Samozřejmě je třeba vyhledat potřebné funkce, popř. třídy a promyslet, jestli by tahle trochu prasečina nešla maličko pročistit.
Záleží, jak dobré to má být. Pro jednoduchý hledač stačí grep nebo MySQL LIKE. Základní princip vyhledávačů je popsaný na Wikipedii, teoreticky se ty algoritmy učí třeba na FI MUNI (moc zajímavá doktorská studia: 1 2 3 4), prakticky je to velmi střežené tajemství pod NDA
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.