- Bohužel věc není tak jednoduchá, jak píšeš. Co funguje na desetitisícových tabulkách nefunguje při více než milionu recordů. Zkoušel jsem různá nastavení pro oba enginy povolené v PhpBB a věnoval jsem tomu více než dva měsíce bádání a prohledávání různých helpdesků jak k MySQL (včetně on-line chatu), tak k PhpBB (i jiných systému založených na MySQL), kde se obdobné problémy řeší - s tímto zjištěním:
- Při rozsáhlosti databáze Modelfora a nastavení ft_min_word_len na tři znaky (o dvou jsem vůbec neuvažoval) nabývá ft index takové velikosti, že na něm přestává fulltext pro MyISAM engine spolehlivě fungovat. Ne vždy vrátí požadovaný výsledek a navíc velmi zatěžuje server. Když hledání vrací desítky, nebo stovky výsledků, tak je odezva ještě rychlá, ale např. výsledkem fulltext hledání výrazu "Jak" je víc než 150.000 výskytů, což na několik desítek sekund téměř zahltí server.
- Pro podobně rozsáhlé DB je obecně doporučováno použít externí vyhledávací engine jako např SPHINX, ale ten není přímo podporován v PHPBB. Dokonce jsem se pokoušel nějak jej naroubovat podle jednoho nedodělaného modu, ale bez úspěchu (mé znalosti SPHINXu jsou značně omezené).
- Do pokročilého hledání jsem z výše uvedených důvodů přidal privátní vyhledávání přes Google, které hledá velmi spolehlivě a rychle a hlavně využívá externí zdroje.
"There are 10 types of people in this world. Those who understand binary and those who don't" |