Starší komentáře ke článku: Fulltextové vyhľadávanie v MySQL - prax

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Jan Brasna

Datum vložení: 20.2.2004 0:49:09

Zdravim, ocenuji po nejake dobe opet clanek uzitecny pro sirsi masy ctenaru, jen bych mel par poznamek ke kodu.

Kdyz uz ve stringach nepouzivate promenne a retezce spojujete, mohl byste radeji pouzit single quotes, vyhnul byste se nekdy silenemu escapovani (neplati pro sql, tam jsou double quotes koser, tam by se single musely escapovat).

Take pouzivani SELECT * FROM ... je spatnym zlozvykem, nepouzivate-li
vsechny polozky, ale treba jen dva sloupce...

Avatar

Autor komentáře: Pavel Francírek

Datum vložení: 20.2.2004 10:18:24

Dalsi drobna poznamka je, ze minimalni delka hledaneho slova se u verze 4.0 a novejsi da nastavit pomoci hodnoty ft_min_word_len. Default jsou zminene 4 znaky.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 20.2.2004 10:55:09

Pro starší verze existuje workaround, funkční i v novějších. Pokud se k řetězci přidá hvězdička, je vyhledáván, i když nesplňuje podmínku počtu písmen. Pokud se výsledk seřadí podle score, většinou se člověk dostane k tomu, co původně chtěl ;-)

Avatar

Autor komentáře: Vojtěch Semecký

Datum vložení: 1.7.2004 12:03:46

Nevím, jak jste k tomu dospěl, ale:

1) zkoušel jsem to a nejde to

2) z principu to nemůže fungovat. Ta minimální délka nesouvisí ani tak s vyhledáváním, jako s vytvářením indexu. Pokud nejsou 3 písmenná slova zaindexována, nelze je prostě vyhledat ani přidáním hvězdičky. Mohlo by to fungovat leda kdybyste použil fulltextové vyhledávání a neměl DB oindexovanou. Pak možná. Ale nemohl byste zase použivat boolean mode (takové ty operátory ala Google).

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 1.7.2004 12:21:40

Dospěl jsem k tomu prostřednictvím vývojářské konference MySQL, před několika lety, když to ještě bylo aktuální. Vzhledem k tomu, že používám nejnovější verzi 4.1x buildu, nemohu posoudit, zda a jak to funguje či nefunguje ;-)

Avatar

Autor komentáře: Michal Illich

Datum vložení: 20.2.2004 15:21:18

Nebo si muzete licencovat Jyxo :)

Napojeni na SQL umi taky, s diakritikou problemy nema, umi sklonovat a casovat, ma vic operatoru, lepsi relevanci, umozni vam hledat i podle autora ci rubriky, umoznuje radit podle data vydani, atd. - podrobnosti na pozadani soukrome, at tu nedelam prilis reklamu :)

Avatar

Autor komentáře: Jirka

Datum vložení: 21.2.2004 9:18:26

Posli prosim vice o Jyxo na romp@stonline.sk , dik.

Avatar

Autor komentáře: Kema

Datum vložení: 21.2.2004 12:27:15

Jo a mne to info prosimte posli taky (kema.ja@centrum.cz). Dik

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 21.2.2004 12:51:58

A co si takhle zajít přímo na stránky Jyxa? Jsou tam podmínky i kontakt na pana Illicha. Číst přeci umíte ;-)


(Další příspěvky typu "zašlete mi informace na adresu xyz@example.com" budu mazat ;-)

Avatar

Autor komentáře: juha

Datum vložení: 22.2.2004 17:14:24

jsem rád, že tomu tak zase je

Avatar

Autor komentáře: redwasp

Datum vložení: 23.2.2004 22:03:09

Jaka je vyhoda toho ze se ten index vytvori pred hledanim a pak zase smaze? Nevim jak interne MySQL ten fulltext index vytvari, ale dovolil bych si tipnout ze to bude casove velmi narocne...

Avatar

Autor komentáře: Erik Hoffmann

Datum vložení: 24.2.2004 13:49:25

Mate pravdu. Malo to byt cele zakomentovane. Kedze pouzivame vyhladavanie s modifikatorom IN_BOOLEAN_MODE nepotrebujeme vytvarat index, avsak je to pomalsie. Naspravnejsie by to bolo urobene tak, ze si vytvorime v tej tabulke, kde vyhladavame fulltext indexy, aby to bola kombinacia vsetkych stlpcov, na ktorych vyhladavame. V tom pripade by sa sa to zrychylo a praca s indexmi (indexovymi subormi) by prebiehala len pri pridani, mazani, alebo modifikaciami polozky v tabulke. V tom pripade by MySQL nemuselo pri vyhladavani prechadzat vsetky zaznami, pracovalo by iba s indexovymi subormi.

Viac o tom najdete v manualoch MySQL.

Avatar

Autor komentáře: fik

Datum vložení: 7.4.2004 14:14:36

Zdravim, na serveru, ktery pouzivam je verze MySql 3.23.36. Muzete mi prosim nekdo poradit, jak modifikovat prikaz select pro tuto verzi serveru, nebo na tomto serveru fulltextove vyhledavani nikdy nepobezi?
Diky za odpovedi.

Avatar

Autor komentáře: Lukas

Datum vložení: 25.10.2004 9:37:41

Fulltext na starší verzi poběží ale bez BOLEAN MODE

Avatar

Autor komentáře: JAn Červený

Datum vložení: 30.1.2005 10:08:04

Zdravím, nevíte jak vyhledávat ve více tabulkách? Mají identické sloupce... Když to napíšu klasicky, tj ... select * from news,about_us,downloads ... tak to neběží, Mysql ohlásí něco o nejednoznačnosti vyhledávání. Co s tím?

Avatar

Autor komentáře: Petr Ptáček

Datum vložení: 6.2.2005 14:05:10

Nevím jestli to vyřeší Váš problém, ale řešil jsem obdobný problém jak vypsat data z několika tabulek a vyřešil jsem to takto: v první tabulce jsem zadal hledání a výsledek uložil do nového pole nař. $vyhledavani[][score], $vyhledavani[][nadpis] pak jsem přešel na další tabulku a opakoval stejný postup s tím, že data jsem uložil jako pokračovaní do toho samého pole. Po té jsem pomoci PHP funkcí pro pole seřadil hodnoty v poli podle score a výsledné pole jsem vypsal od nejvyššího score.

Avatar

Autor komentáře: Batas

Datum vložení: 2.3.2005 19:55:05

Bohužel ten AGAINST neni insensitivni. Tzn , že vyhledává slova podle velikosti písmen. :)

Avatar

Autor komentáře: Insekticid

Datum vložení: 18.8.2005 18:43:57

Nepochopil jsem proc pri vyhledavani vytvorime fulltext index a pak jej zase odstranime.

Avatar

Autor komentáře: Jakub

Datum vložení: 27.4.2007 14:53:58

Má to silný efekt - zpomalení skriptu. Tak asi proto :-)) Vytváření indexů je jedna z nejvíce zatěžujících akcí v databázi.

Avatar

Autor komentáře: SQi

Datum vložení: 1.9.2005 15:20:48

Nevím teda jestli nepíšu z cesty, sám jsem vyhledávání řešil tak, že jsem hledaný řeťezec nejdříve převedl na text bez diakritiky a na malá písmena, pak jsem postupne z databáze procházel data, na straně PHP zase obral o diakritiku a převed na malá písmena, a až pak kontroloval, zda se tam slova vyskytla. Je to IMHO lepší, protože uživatel může hledat s i bez diakritiky, psát velkými i malými písmeny. Akorát se to neřeší na straně databáze, ale na straně PHP. (SQL by měl být rychlejší)

Zpět na článek | Úvodní stránka Interval.cz