» »

php iskalnik

php iskalnik

Cokolesnik ::

pozdravljeni. imam iskalnik, ki isce po mysql bazi. rad bi razbil iskalni niz, tako ce bi npr. vpisal zelena krastaca, da bi izpisal vse zadetke, ki imajo zelena in vse ki imajo krastaca. zdej namrec najde le tiste, ki imajo obe besedi.

za odg. se zahvaljujem.

Ziga Dolhar ::

Iskalni niz explode() po presledkih v array, potem pa iščeš za vsak element arraya in izvržeš rezultate.

Cokolesnik ::

Zahvaljujem se za tvoj odgovor ziggga. z ukazom explode sem razbil iskani niz, vendar je sedaj problem, ker bi zelel, da mi ven vrze zadetke, ki bodo vkljucevali vse vpisane besede. sedaj mi namrec isce tako, da izpise zadetke, ki imajo eno od vpisanih besed, to pa povecuje stevilo zadetkov, kar si ne zelim.

al se to sploh da? se pravi, ce vpisem zelena krastaca, da mi najde strani, ki vsebujejo ali zelena krastaca ali pa krastaca zelena. ne sme mi pa vrzt ven strani ki vsebujejo bodisi samo krastaca, bodisi samo zelena.

Ziga Dolhar ::

Potem pa takole,

razbiješ niz na array, in potem svojo bazo preiščeš na dva načina:

ali za tistimi zadetki, ki imajo "in" prvi niz "in" drugi niz "in" tretji niz...

Ali pa poiščeš najprej niz[0], potem pa znotraj tega izvedeš selekcijo -- ohraniš tiste zadetke, ki vsebujejo niz[1], in ponavljaš do niz[x] toliko časa, dokler:

a) imaš "minimalno število rezultatov" (recimo min. 10 zadetkov)
b) dokler ne prefiltriraš skozi vse nize :].

lp, Žiga

Ziga Dolhar ::

... Ali pa iščeš posebej za vsak niz, potem pa poiščeš presek.

Seadoo ::

Ali pa uporabi full text index in funkcijo match(), (preberi manual mysql) pa ti zadetke sortira po ujemanju.
Out of my mind. Back in five minutes.

Reso ::

$iskanje_query=mysql_query("SELECT clanki.d_naslov FROM clanki WHERE MATCH (clanki.clanek,clanki.obnova) AGAINST ('$iskalnik') ");

To je primer iskalnika z MATCH. Seveda moras imeti narejen index na stolpcac clanek in obnova v tabeli clanki . MATCH metoda ti pogleda katere vrstice najveckrat vsebujejo dane besede. Avtomaticno tudi visje rankira besede, ki se manjkrat pojavijo. Pri testiranju MATCHa pazi samo na takoimenovani STOPWORD (ce ima vec kot polovica vrstic eno izmed danih besed te besede ne uposteva).

Ce imas prevec casa naredi novo tabelo, ki bo imela 2 stolpca (naprimer beseda in id_clanka/novice). Potem pri vstavljanju novega clanka/novice tekst razbijes v besede in vsako besedo posebej zapises v to drugo tabelo in pri iskalniku isces samo z navadnim SELECT WHERE beseda=neki or beseda=neki2.

Zgodovina sprememb…

  • spremenil: Reso ()

Tr0n ::

Iskanje z LIKE tudi vredu deluje in je hitro. SELECT nekaj FROM bla WHERE lolek LIKE '%trolek%'


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

iskalnik

Oddelek: Slo-Tech
342286 (1204) shotalick
»

levenshtein distance

Oddelek: Programiranje
122096 (1583) windigo
»

python in postgresql (strani: 1 2 )

Oddelek: Programiranje
777535 (6436) ZaphodBB
»

[PHP]Zajem podatkov iz baze

Oddelek: Programiranje
354063 (3700) cobrica
»

search($string,'text'); ???

Oddelek: Programiranje
5922 (854) poweroff

Več podobnih tem