» » » Nová affiliate sieť na Slovensku .dognet - provízie až vo výške 228€
Zobrazují se odpovědi 1 až 8 z 8

Nastavení fulltextu

  1. fida8 Hodnocení: 10 (100%) fida8 je zatím velká neznámá
    1
    Dobrý den,

    zajímalo by mě jak nastavit fulltext (vyhledávací dotaz), aby našeptávač vyhledávání ukazoval vyhledávání od začátku slov.

    Díky za postřehy
    Naposledy upravil fida8 : 25.11.2011 v 11:44

  2. Co se právě děje na Webtrhu?
  3. duben Hodnocení: 49 (100%) duben is just really nice duben is just really nice duben is just really nice duben is just really nice duben is just really nice
    2
    To je jednoduché, mají tam AJAX co po každém zadání písmenka zavolá nový dotaz na DB a ten vypadá odhadem nějak takhle:
    Kód:
    SELECT vyhledavanaslova FROM tabulka WHERE vyhledavanaslova LIKE 'zadanoveformulari%'

  4. fida8 Hodnocení: 10 (100%) fida8 je zatím velká neznámá
    3
    Právě jsem se chtěl vyhnout LIKE kvůli rychlosti a proto že vyhledávání je celkem zatěžované. Mohlo by to jít i nějak takhle ve fulltext? (MATCH, AGAINST)

  5. teoreticky by to slo delat pomoci Lucene, ale jeste sem to nezkousel

  6. Pokud u LIKE používáš zápis "vyraz%", hledají se tedy pouze řetězce začínající tím výrazem, použije se u MySQL index. Právě protože je to podle řetězce, takže vyhledávání by mělo mít složitost log(n)*delkaRetezce v nejhorším případě. Problém potom vzniká při přepočítávání indexu, který je náročný. Takže bych doporučil nově hledané výrazy ukládat do pomocné tabulky a přepočítávat třeba jednou denně v noci.

  7. duben Hodnocení: 49 (100%) duben is just really nice duben is just really nice duben is just really nice duben is just really nice duben is just really nice
    6
    Citace Původně odeslal fida8 Zobrazit příspěvek
    Právě jsem se chtěl vyhnout LIKE kvůli rychlosti a proto že vyhledávání je celkem zatěžované. Mohlo by to jít i nějak takhle ve fulltext? (MATCH, AGAINST)
    Samozřejmě to jde udělat lépe, tohle byl jen takový jednoduchý nástřel, rychlejší bude třeba:

    Kód:
    SELECT vyhledavanaslova FROM tabulka WHERE LEFT(vyhledavanaslova, LEN('zadanoveformulari')) = 'zadanoveformulari'
    Ono záleží, pokud bude LIKE použitý nad řádově tisíci až desítkami tisíci záznamy je to skoro jedno. Od stovek tisíců a milionů záznamů, už LIKE není vhodný a rozdíl rychlosti se začne projevovat. Pak se může začít brát v úvahu i předpočítávání indexu jak psal zaruba, nebo další optimalizační techniky.

  8. Citace Původně odeslal duben Zobrazit příspěvek
    Samozřejmě to jde udělat lépe, tohle byl jen takový jednoduchý nástřel, rychlejší bude třeba:

    Kód:
    SELECT vyhledavanaslova FROM tabulka WHERE LEFT(vyhledavanaslova, LEN('zadanoveformulari')) = 'zadanoveformulari'
    Opravdu bude tohle rychlejší? To mě celkem překvapilo. Čekal bych, že ten like stejně porovnává řetězec jen do délky toho "zadanoveformulari", takže proč to ještě ořezávat?

  9. duben Hodnocení: 49 (100%) duben is just really nice duben is just really nice duben is just really nice duben is just really nice duben is just really nice
    8
    Nejsem si jistý u MySQL, na MSSQL to bude určite rychlejší. DB engine pro LIKE používá jiný algoritmus než pro = i při porovnávání stringu. Rozdíl do pár desítek tisíc nebude znát, nad pár stovek tisíc už by tam rozdíl je.

Hostujeme u Server powered by TELE3