Autor Zpráva
Exkalibr
Profil *
* Mám předdefinovaných 178 skupin slovíček (tagů - zatím jen v souboru).
* mám celkem zhruba 622 slovíček (resp. kořenů), ze kterých bych chtěl sestavit regulární výrazy.

Zjednodušený příklad:
Mám 4 kořeny patřící do stejné skupiny:
budov, stav, vybudov, vystav
Z toho mohu sestavit regulární výraz např. /\bbudov\b|\bstav|\bvybudov|\bvystavě/

Co chci zjistit je výskytů slovíček ve zprávě je - to umím pomocí preg_match (předpokládám že výsledek té funkce je počet výskytů).

Ale chci se zeptat jak to udělat co nejefektivněji. Jelikož těch skupin je 178 tak předpokládám, že ten preg_match musím 178x zavolat na jeden text. Předpokládám, že bych mohl text nejprve omezit na délku 2000 znaků. Ale mohu něco udělat pro to aby hledání znaků bylo rychlejší? Například zaměnit všechny znaky, které nejsou ve třídě [a-zA-Z] + české znaky za mezery a pak zaměnit všechny opakující se mezery za jednu mezeru?

Jakékoliv postřehy uvítám.
Kajman
Profil
Pokud Vám jde o fulltextové vyhledávání, tak se raději mrkněte na něco hotového - např. ElasticSearch nebo Sphinx.
lionel messi
Profil
Exkalibr:
to umím pomocí preg_match (předpokládám že výsledek té funkce je počet výskytů).

Nie je.

Pozri sa na preg_match_all.
Exkalibr
Profil *
Nejde mi o fulltext. Mám určitý soubor tagů, který je typický pro problematiku, kterou se bude forum zabývat. Ale řekl jsem si že bude lepší a méně zatěžující pro server, když to udělám na straně serveru. Takže se budu muset podívat na JS řešení.


oprava: na straně klienta
Kajman
Profil
Pokud se má podle tagů např. vyhledávat, tak bych bych si jejich výskyt předpočítal a uložil. Stačí to pak spočítat jen při změně textu nebo při změně tagu.
Exkalibr
Profil *
Mě jde o to, aby se ty tagy vyhledali když uživatel píše příspěvek na forum. Jak zmáčkne "Odeslat" měla by se spustit JS funkce, ktará vyhledá slovíčka a převede je na tagy.

Namadají mě dvě možnosti:
a) buďto zjistit pouze počet slovíček ve zprávě nebo
b) pokud existuje taková funkce, tak ty nalezené slovíčka rovnou zaměňovat za '', s tím, že potřebuju znát počet nahrazených slovíček. Tím bych chtěl předejít tomu, aby se slovíčka která jsem už identifikoval hledali opakovaně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0