Ste vedeli? Podjetje TRSPLET s.p. je 4.maja 2015 spletno stran preusmerilo na Optiweb.

Podjetje Optiweb je na trgu že 6 let in ponuja celostno storitev spletnega nastopa. Poskrbimo za izdelavo spletnih strani na sistemu Wordpress in spletnih trgovin na platformi Magento.

Ukvarjamo se tudi z različnimi kanali spletnega marketinga; od različnih Google Adwords oglasov do Facebook oglaševanja. Posebej ponosni smo na naše uspehe pri optimizaciji spletnih mest za iskalnike, kjer že od začetka dosegamo odlične rezultate.

Želite predloge in nasvete, kako izboljšati vaš spletni nastop? Kontaktirajte nas prek
spletnega obrazca.

kuverta Lahko pa se vpišete tudi na seznam prejemnikov naših mesečnih e-novic, v katerih predstavljamo najnovejše trende (poslovnega) spletnega sveta. Nanje se lahko prijavite tukaj.

reference spletnih strani
26th February

MySQL iskanje LIKE vs FULL-TEXT

MySQL omogoča dva načina iskanja po tabelah in sicer z LIKE ter FULL-TEXT.

#1: LIKE
[mysql]
SELECT `ime_osebe` FROM `seznam_oseb` WHERE `ime_osebe`=’%rok%’ OR `ime_osebe`=’R%’ OR `ime_osebe`=’R__’ OR `ime_osebe`=’%ok’
[/mysql]

#2: FULL-TEXT
[mysql]
SELECT `ime_osebe` FROM `seznam_oseb` MATCH(`content`) AGAINST(‘Rok’)
[/mysql]

#1 LIKE:

  • ‘%ok‘ => ‘Karkoli ok‘ (Karkoli => poljubno število poljubnih znakov pred “ok“, Rok, blablaok, ToSemJazRok, 1okolist, …)
  • ‘_ok‘ => ‘X ok‘ (X => točno en poljubni znak pred “ok“, torej celotna beseda mora biti dolžine tri, Rok, Xok, Kok, Mok, …)
  • SELECT 500 LIKE ‘5%’ => Možnost uporabe na številkah (ni potrebno, da iščemo po polju VARCHAR, CHAR, TEXT ampak tudi INT, itd)

Več informacij o LIKE.

Problem pri LIKE je v tem, da v primeru, ko iščemo po vsebini za manjše besede (dolžine 3 ali manjše), vrne skoraj vse vrstice. Primer, “in” je prisoten v skoraj vseh stavkih, zato nam bo MySQL kot rezultat vrnil skoraj vso vsebino oz. vrstice z vsebino, ki vsebuje ‘in’.

Tukaj nastopi FULL-TEXT, ki (vsaj kakor je meni znano) deluje le na MyISAM tabelah. Na srečo obstajajo dodatki, kot je Sphinx Search Egine, ki dodajo podporo tudi za inno tabele. FULL-TEXT značilnost:

  • avtomatsko sortira rezultate po relevanci (bolj relevantni zadetki so na vrhu)
  • deluje le na CHAR, VARCHAR, ali TEXT tipu
  • potrebuje FULL-TEXT index (ALTER TABLE `tabela` ADD FULLTEXT (`ime_polja`))
  • če se iskana beseda pojavi v več kot 50% vseh vrstic potem MySQL vrne prazen rezultat
  • obstaja splošna datoteka z pogostimi besedami jezika (npr: the, we, are). Če stopword datoteka vsebuje naš iskalni niz bo MySQL vrnil prazno množico. Stopword datoteko lahko povozite z svojo z ukazom: ft_stopword_file
  • privzeto iskalne nize manjše od 4 in daljše od 10 ne upošteva, je pa možno to spremeniti z ft_max_word_len in ft_min_word_len. V primeru spremembe morate FULL-TEXT index ponovno zgraditi, lahko z ukazom REPAIR TABLE table QUICK, vendar se včasih zgodi, da potem MySQL vrača čudne rezultate. Rešitev zato je odstranitev FULL-TEXT indexa in ponovno dodajane FULL-TEXT indexa.
  • je hitrejši kot LIKE

Dodatne informacije za FULL-TEXT:

Primer rezultatov za majhne iskalne niz, v mojem primeru: se

FULL-TEXT (1 vrstica izmed 70):

Projects
Enterprise class IT security project services for any size of business. All security projects delivered by the security Practice follow our Assess, Design, …

LIKE (70 vrstic izmed 70):

ISO27001
Reach for the ultimate security standard If you want to be setting the standard in private or public sector IT security, then you need ISO27001. Certification …

Our Technology
How we use technology to make us the best in the business. We Practice What We Preach. If we recommend a solution to our clients, then we’ll be using it …

We cannot compete with these companies and be the best at delivering IT service to our clients – so we don’t try. We realise that we can deliver value to our …

Tudi na splošno FULL-TEXT iskanje vrne bolj primerne rezultate, ki vsebujejo informacijo za katero je večja verjetnost, da jo uporabnik išče kot pri LIKE načinu iskanja.

Delodajalec: Pangaea.si


2x komentirano na “MySQL iskanje LIKE vs FULL-TEXT”

  1. Dejan je napisal:

    WHERE `ime_osebe` like ‘%rok%’ ;)

  2. Stalni UTF-8 problemi – utf8 mysql php – čšž šumniki težave – iskanje znaki – mysql like | T&R splet - internetne storitve je napisal:

    [...] LIKE – MATCH AGAINST [...]

Dodaj komentar

You must be logged in to post a comment.