Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Afisare rezultate cautare DB
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
lostone



Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall

Trimis: Mie Mar 09, 2005 12:39 pm    Titlul subiectului: Afisare rezultate cautare DB  

Problema: fac o cautare intr-o tabela cu niste articole. Imi returneaza rezultatele, toate bune si frumoase pana aci. La afisarea rezultatelor, vreau sa pun si un mic context in care s-a regasit cuvantul cautat, dar NU primele 200 de caractere din articol sau ceva de genul asta, ci chiar paragraful unde se regaseste cuvantul cautat, de genul 150 de caractere inaintea termenului gasit si 150 dupa el. intelegeti ce vreau sa zic? sper ca am expus cat de cat inteligibil ce vreau sa zic...
Sus  
letalis



Data înscrierii: 28/Feb/2005
Mesaje: 8

Trimis: Mie Mar 09, 2005 4:22 pm    Titlul subiectului:  

ok...pai...selectezi articolul din db, tot articolul trebuie pus intr-un aray, intr-o variabila pui numarul de oridine al cuvantului din array (ex: articol: bla bla dsf lskjd xxx klasjd lask a - nr. ordine este 5 pt. xxx), si apoi din array stergi tot ce inseama peste 150 la stanga si dreapta. o sa postez scriptul mai tarziu, momentan abia m-am trezit. :D
Sus  
lostone



Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall

Trimis: Mie Mar 09, 2005 4:59 pm    Titlul subiectului:  

hmm.... tinand cont de faptul ca serverul sql e separat de serverul web si serverul web are in jur de 100 hituri / secunda, s-ar putea sa reusesc in scurt timp sa le pun in freza pe-amandoo, prin metoda asta... ma complic prea tare, ma gandeam ca poate exista vreo metoda mai simpla... mersi de post, anyway ;)

alta problema ar fi o cautare intr-o baza de date in text cu diacritice. daca vine unu' pe situ' meu si cauta "usa" si in db am scris "ușă", s-a termint cu rezultatele... any ideea ? am incercat sa preiau un articol sa-l explode dupa " " (spatiu) si sa compar soundecsi (al cuv cautat si al cuv din db). da' pentru doar 200 de cuvinte am timp in server de
Cod:
real    0m0.149s
user    0m0.085s
sys     0m0.017s
.

si numai acum am un text de vreo 22.000 cuvinte, metoda asta iese din discutie...

damn complicated! creca ma iau de... "edvartaizing", ca tot e la moda :P
Sus  
MasterPhoton



Data înscrierii: 06/Mar/2003
Mesaje: 437

Trimis: Mie Mar 09, 2005 7:21 pm    Titlul subiectului:  

Solutia ar fi nasoala: Pui un text mare: daca vrei sa cauti ușă nu cauta "usa" ...
Off topic - ce folosesti pentru monitorizarea serverului si a timpului de incarcare / executie ???
Sus  
octavian.p



Data înscrierii: 10/Feb/2005
Mesaje: 10

Trimis: Mie Mar 09, 2005 8:07 pm    Titlul subiectului:  

cred ca aici ai o solutie mai buna

http://www.alistapart.com/articles/searchhighlight/
Sus  
mihnea sim



Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria

Trimis: Mie Mar 09, 2005 9:14 pm    Titlul subiectului:  

Pai stai putin .. cautarea ta e un fel de procedura cu cuvantul cheie precum parametru, sau asa ar tb sa fie ... oricum ideea e ca faci niste arrayuri de "diacritice". Adica a[1] = &acirc a[2] = &ah etc. si faci toate inlocuirile posibile in cuvantul cheie si reapelezi respectiva procedura de cautare ca si cum ai porni una noua. Concatenezi rezultatele. Daca e totul facut ca la carte iti va veni usor sa faci ce am scris eu .. altfel e cam mult de munca in sensul ca tb totul regandit.
Sus  
lostone



Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall

Trimis: Joi Mar 10, 2005 7:22 am    Titlul subiectului:  

MasterPhoton: - right, cum de nu m-oi fi gandit la asta? :P nu, serios acum, e total neprofesional. e ca si cum unu' vrea sa mearga la gara si io-i zis ca-i mai bine sa sa se duca la aeroport...
offtopic: usual stuff din linux: time, top, ps, etc;


octavian.p: - nu asta era ideea, de highlight in pagina, asta e simplu de facut. eu voiam ca dintr-un text de n pagini sa scot doar un mic paragraf de pe la mijloc sa zic, unde se regaseste cuvantul meu cautat, nu sa fac highlight in tot textul; mersi de link oricum;

mihnea sim: merita incercat si ce zici tu, cu toate ca la prima vedere, pare destul de ne-economic dpdv al resurselor. sunt destul de conditionat de hardware-ul serverului (in sensul ca sunt deja multe kestii care ruleaza acolo) si trebuie sa gasesc o solutie destul de economica :(


tocmai ma mai gandex ca as putea in mom. cand introduc un articol in site, sa-l bag in doo campuri: unul sa-l las cu diacritice, si inca un exemplar din care scot diacriticele. cand vine vizitatoru', ma uit la ce cauta el, si daca are vreun caracter "neortodox", caut in campul cu diacritice, daca nu, in cel "clean"... cred ca ar fi mai simplu asa...
Sus  
strategy



Data înscrierii: 19/Noi/2004
Mesaje: 351
Locație: Oradea

Trimis: Joi Mar 10, 2005 8:32 am    Titlul subiectului:  

sau mai simplu ... iti creezi un array in care atribui lui a, ã .. etc pt fiecare .. si cand faci cautarea mai bagi un if si ii zici a=ã .. si sa returneze a ..
Sus  
mihnea sim



Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria

Trimis: Joi Mar 10, 2005 10:34 am    Titlul subiectului:  

asa e .. nu e rau deloc. Ce zice strategy e ceea ce vroiam si eu.. numai ca el transforma o singura data articolul in unul cu diacritice in unul fara si face cautarea! .. ce simplu era ..eu transformam cuvantul in toate posibilitatile in loc sa transform articolul din diacritice in simplu! nice .. Bravo strategy!
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Joi Mar 10, 2005 2:42 pm    Titlul subiectului:  

Daca baza de date e UTF-8, iti stocheaza codul caracterului (de ex. ă = ă).
De asemenea, tu cand trimiti prin POST un string cu diacritice, ti-l transporta cu codurile diacriticelor.

Uite cum am facut eu cautarea:
1. Verific daca in string-ul de cautat exista diacritice.
2. Daca nu exista diacritice, fac cautarea normal si imi returneaza tot ce trebuie..
Daca exista diacritice, folosesc REPLACE in interogare si cautarea se face prin inlocuirea dinamica a diacriticelor cu caracterele standard.

Asta ar fi... algoritmul functioneaza foarte bine!
Sus  
Candyman



Data înscrierii: 22/Noi/2004
Mesaje: 9

Trimis: Mie Mar 16, 2005 3:59 pm    Titlul subiectului:  

Erm... presupunand ca folosesti o tabela de keywords (you do, I hope), poti tine un field cu pozitia keywordului in articol, si de aici e floare la ureche sa afisezi doar sectiunea de care ai nevoie. De asemenea, privind diacriticele, poti face asa: Inca de la popularea tabelei de keywords convertesti diacriticele in caractere 'normale' si acelasi lucru il faci si la cautare (eventual pastrezi si varianta originala si cauti dupa ea daca ai diacritice in textul de cautat, daca vrei un search cat mai exact). Sau faci cum zice ExcalIbvr :)
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community