Pomoc oko search engine-a

poruka: 4
|
čitano: 1.475
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Pomoc oko search engine-a

Prvo pozdrav svim forumasima.

 

POceo sam kuci da pravim bazu podataka za neke moje tekstove, pa sam u to ukljucio i search!!

E sad. Sve je ok, i sve radi ako su u pitanju jedna rec ili vise povezanih reci u odredjenom redosledu, tj ako se taj redosled nalazi i u samoj bazi.

 

Primer:

Trazi se : bob rok

Rezultat: nadje ga za bob rok, ali ne i za rok bob!!!

 

Problem nastaje znaci kad se pretrazuje vise reci....

Kako da postavim upit za bazu??? IImam ja ideju ali neznam kako da je realizujem...

Trabalo bi razbiti taj vise-recni string na niz koji bi ispitivao upit za svaku recc posebno...

Ako se svaka rec nalazi u datom tekstu, vraca link uspecno, ako ne, ide dalje sa pretragom cim se prva rec ne nalazi u tekstu!

 

Ovo je funkcija za sada:

 

 

function trazi($table,$search) {

$sve = mysql_query("SELECT id,headline,whole FROM $table ORDER BY id DESC");

$data = "";

while($tmp = mysql_fetch_array($sve)) {

if(stristr($tmp['headline'], $search) || stristr($tmp['whole'], $search)) {

$data .= '<a href="LINK ZA TAJ TEKST" ' . $tmp[0] . '" target="_blank" style=" text-decoration:none; color:#1A5C1F; font-size: 13px;">';

$data .= '<p>' . $tmp[1] . '</p>';

$data .= '</a>';

}

}

return $data;

}

PS. PRetraga se vrsi i u naslovu i u sadrzaju teksta!!! Bitno je da se zadati string nadje bar u jednom slucaju!!
HVala unapred na svim idejama i sugestijama!!!

 

 

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Pomoc oko search engine-a

napravi funkciju koja ce tekst (uneseni string) pretvoriti u uvijet

 

znaci

 

ako je uneseni string "bob rok je zakon" onda da ti to pretvori u " 'bob' OR 'rok' OR 'je' OR 'zakon' "

znaci fukcija radi:

1. na pocetak stringa dodaje apostrof '

2. svaki razmak mijenja u ' OR ' - apostrof OR razmak apostrof

3. na kraju stringa stavlja apostrof '

 

dobiveni string stavi kao uvjet pretrazivanja:

 

SELECT id,headline,whole

FROM $table

WHERE CONTAINS (IME_KOLONE_NASLOVA, $novi_string_za_pretragu ('bob' OR 'rok' OR 'je' OR 'zakon')

OR
WHERE CONTAINS (IME_KOLONE_TEKSTA, $novi_string_za_pretragu ('bob' OR 'rok' OR 'je' OR 'zakon')

ORDER BY id DESC

 

 

s time da bi ti u ovom slučaju bilo dobro indexirati kolone naslova i teksta

Why make something easy way, when there is hard way
13 godina
neaktivan
offline
Pomoc oko search engine-a

Porbacu nesto, pa javim sta sam uradio!!!

 
0 0 hvala 0
12 godina
neaktivan
offline
Re: Pomoc oko search engine-a

Probaj i sa match against. Evo kako bi to trebalo otprilike izgledati, sortirano po relevantnosti (napisano kao "bodovi):

 

SELECT MATCH('naslov','opis') AGAINST ('bob rok') as bodovi FROM tekstovi WHERE MATCH ('naslov','opis') AGAINST('+bob +rok' IN BOOLEAN MODE) ORDER BY bodovi DESC LIMIT bleh

 

Nemoj zaboraviti staviti fulltext index na naslov i opis, tablica mora biti u MyISAM enginu.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice