Poslao: 26 Feb 2005 13:02
|
offline
- Balkanac82
- Legendarni građanin
- Pridružio: 20 Dec 2004
- Poruke: 2887
- Gde živiš: Na Balkanu
|
Pokušavam da napravim pretraživač, koristim podatke iz jedne knjige u kojoj to nije objašnjeno. Napravio sam mysql bazu u njoj tabelu sa kolonama title, url, keywords. Postoji i fajl index.html u kojiem je forma za unošenje upita i search.php fajl koji obrađuje podatke.
Sve je to u redu, nekoliko redova sam unio u kolonu i pokušao pretraživanje. Povezivanje na bazu je uspelo i čitanje podataka iz nje, ali imam jedan problem. Ako je npr u bazi podataka u polje keywords unešeno ime prezime, a ja pretražujem prezime ime, nema rezultata. Znači moram uneti tačno onim redom koji je upisan u bazi, naravno ne celi teks koji se nalazi u keywords. I to mi predstavlja problem jer ako unesem samo jedno slovo koje se pojavljuje u keywords, ja dobijem rezultate.
Za poređenje u search.php sam koristio like jer piše da daje veću slobodu od =, što je i logično.
Moje je pitanje: Mogu li da koristim nešto drugo za poređenje, ili moram da dodatno obrađujem podatke koji se unose u upit?
Jasno je da mogu da izvršim pretraživanje za svaku reč koja se nalazi u upitu, ali mi se čini da bi mi to sve iskomplikovalo.
Malo duže pitanje, nadam se da i odgovori neće biti isti.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 26 Feb 2005 14:44
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
resenje ti je da uradis search za svaku rec, pa onda da 'spojis' rezultate svih pretraga, i da ih poredjas tako da prvo idu rezultati koje sadrze sve reci...
tako rade pretrazivaci
|
|
|
|
Poslao: 26 Feb 2005 15:32
|
offline
- Balkanac82
- Legendarni građanin
- Pridružio: 20 Dec 2004
- Poruke: 2887
- Gde živiš: Na Balkanu
|
To mi je prvo palo na pamet, ali kako da odredim broj reči i kako da uzmem reč po reč iz čitavog upita, Može li neko staviti malo koda ili još bolje ima li ko skriptu koja radi, ja sam je pokušao naći na web-u ali nema je. Ako neko ima skriptu ili zna link na kojem je mogu naći neko postuje,a ja ću već bazu praviti sam.
|
|
|
|
Poslao: 26 Feb 2005 16:27
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
moraces sam da napises petlju, koja trazi blanko i odvaja rec po rec...
|
|
|
|
Poslao: 26 Feb 2005 18:31
|
offline
- Balkanac82
- Legendarni građanin
- Pridružio: 20 Dec 2004
- Poruke: 2887
- Gde živiš: Na Balkanu
|
To mi je jasno. Našao sam u knjizi to što mi treba, koristim taj primer, ali nema razultata. Jednostavno nema kraja petlji, procesor je zauzet 100%, a u status bar liniji piše waiting for localhost.
$key = strtok($search, ' ');
echo $key;
while($key!=' ')
{
$key = strtok(' ');
echo $key;
}
echo sam postavio samo da proverim da li kod radi i da li to može ovako. Do petlje je sve u redu, znači ako nju obrišem daje mi prvu reč.
Dopuna: 26 Feb 2005 18:31
Evo našao sam problem
while($key!='')
nema blanka među navodnicima.
Sada me interesuje koji operator da koristim jer sa like ako otkucam samo jedno slovo i njime pretražujem, vraća mi sve rezultate koji u keywords sadrže to slovo.
|
|
|
|
Poslao: 26 Feb 2005 22:02
|
offline
- Bone Collector
- Legendarni građanin
- Pridružio: 18 Apr 2003
- Poruke: 5001
- Gde živiš: Beograd
|
Balkanac ::Sada me interesuje koji operator da koristim jer sa like ako otkucam samo jedno slovo i njime pretražujem, vraća mi sve rezultate koji u keywords sadrže to slovo.
samo nastavi da koristis LIKE jer tako i trebas da dobijes rezultate, evo npr probaj na google-u da otkucas slovo a i dobices "about 8,000,000,000 for a"
|
|
|
|
|
Poslao: 28 Feb 2005 16:32
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
for ($j=0; $j<$i; $j++)
{
$query = "select * from podaci where ". keywords." like '%".$keyword[j]."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
// i sve ostalo, gde uzimas podatke
}
ovo //ostalo, tu trebas da podatke smestis u niz... i da kasnije uporedjujes dobijene nizove, i da u prvi plan stavis rezultat koji se pojavljuje u vecini nizova [to jest u vecini pretraga]
dakle, uradis pretragu za svaku rec, i onda u prvi plan izbacis onaj rezultat koji sadrzi sve [ili najvise] trazenih reci.
|
|
|
|
Poslao: 28 Feb 2005 16:45
|
offline
- Balkanac82
- Legendarni građanin
- Pridružio: 20 Dec 2004
- Poruke: 2887
- Gde živiš: Na Balkanu
|
To je to, hvala ti. Odgovorio si mi i na pitanje koje sam sledeće hteo da postavim, tj kako da odaberem onaj rezultat u kojem se pojavljuju svi ili većina rezultata i prikažem ga prvog.
Sad me samo interesuje kako da napravim da mi se po stranici prikazuje samo određeni broj rezultata, na primer 20. Ovde se ispisuju svi rezultati. Nije mi problem da to napravim za prvu stranicu, ali kako da to napravim za ostale. U glavi mi se vrti ideja da napravim link next page i preko url pošaljem podatak o kojoj se stranici radi.
Ja koristim jednu knjigu i podatke koje sam koristio uzimam iz primera elektronske prodavnice, gde ima pretraživač proizvoda, ali sve proizvode prikazuje na jednoj strani. Odgovor na postavljeno pitanje bi mi mnogo značio ne toliko radi pretraživača, već radi sistema na koji se to radi. Verovatno će mi to posle negde trebati.
|
|
|
|
Poslao: 28 Feb 2005 17:00
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
hmmm... onda bi rezultate nizova morao da sacuvas negde u bazi... ili da uvek iznova vrsis pretragu, prikazivajuci drugih 10 niza [a prva 10 preskocis], recimo...
|
|
|
|