http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Web development » Cautare Fulltext cu MySQL
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
Cautare Fulltext cu MySQL
MesajTrimis: 19/07/2007 17:30 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




Bazele de date MySQL au o optiune nu atit de des folosita cind vine vorba de cautare in cimpuri text sau varchar: cautare fulltext.

Sa zicem ca avem o tabela asa:

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
PRIMARY KEY(id)
)

De obicei cautarea intr-un cimp de tip text sau varchar se poate face asa:

SELECT * FROM articles WHERE body LIKE '%cuvint_cheie%'

Asta returneaza inregistratile care contin 'cuvint_cheie'. Insa ce te faci cind vine vorba de 2 cuvinte cheie sau de cautat in 2 cimpuri sau alte optiuni? Pentru asta exista fulltext.

Pentru asta trebuie modificata structura tabelei, fapt care poate dura destul de mult pt. o tabela existenta (cu multe inregistrari):

ALTER TABLE articles ADD FULLTEXT(body, title);

Sau direct la crearea tabelei se poate scrie:

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
PRIMARY KEY(id),
FULLTEXT (title,body)
)

Apoi o sa puteti selecta inregistrarile care contin anumite cuvinte cheie astfel:

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('cuvint_cheie');

Sau se poate obtine un scor al fiecarei inregistrari gasite, in functie de cit de relevante sint cuvintele cheie pentru inregistrarea respectiva:

SELECT *, MATCH(title, body) AGAINST ('cuvint_cheie') AS score FROM articles
WHERE MATCH(title, body) AGAINST('cuvint_cheie')

Scorul o sa fie tinut in cimpul 'score'.

O problema cu aceste cautari este ca nu o sa fie returnate nimic pentru cuvinte cheie prezente in mai mult din 50% din inregistrari. De exemplu intr-o baza de date cu articole despre MySQL si care contine in aproximativ fiecare inregistrare cuvintul 'MySQL' nu o sa fie returnat nimci la cautarea acestuia. Si la fel se intimpla cu cuvinte foarte scurte si deosebit de des utilizate.

Exista apoi cautari logice in care trebuie sa fie incluse unele cuvinte sau excluse altele, insa despre asta in alt articol.

Pentru alte informatii vedeti manualul MySQL.

http://dev.mysql.com/doc/mysql/en/fulltext-search.html
Vezi profilul utilizatorului Trimite mesaj privat

Cautare Fulltext cu MySQL
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Web development
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.