Topic: Paieska duomenu bazeje

Sveiki,
iškilo menkute problemėlė. interneto svetainėje reikia atlikti paieska, siuo metu naudoju:

$sql="SELECT *
FROM (
SELECT mobiles.modelis, mobiles.modelis2, mobiles.id, mobiles.kaina, mobiles.kaina1 FROM mobiles
UNION
SELECT navigacija.modelis, navigacija.modelis2, navigacija.id, navigacija.kaina, navigacija.kaina1 FROM navigacija
) paieska
WHERE (`modelis` LIKE '%$srch%' 
OR `modelis2` LIKE '%$srch%'
OR `kaina` LIKE '%$srch%'
OR `kaina1` LIKE '%$srch%')";

viskas veikia normaliai, tik problema tame kad jeigu i paieska ivedi "Nokia 2310" tai paieska nieko neranda, o neranda del to kad stulpelyje `modelis` yra laikomi gamintoju pavadinimai (nokia, samsung ir t.t.), o `modelis2` yra laikomas telefono modelis (2310, 6600 ir t.t.) taciau paieska puikiai vykdoma jeigu ivedama tik "Nokia" arba tik "2310", o navigacijose paieska vykdoma normaliai nes ju pavadinimai laikomi viename stulpelyje `modelis` dėl to atliekant paieska "Mio C230" ir "Mio" ir "C230" jis viska randa puikiai. Bandziau skaidyti paieskos zodzius po tarpo bet tada isviso randa begales rezultatu, gal butu koks patarimas? Manau butu gerai sujungti stulpelius kaskaip, bet nelabai isivaizuoju kaip, gal galite padeti kasnors? Aciu.

Re: Paieska duomenu bazeje

a) pabandyk naudoti google integruojamą paiešką;
b) jeigu nori pasiknisti ir yra galimybė konfigūruoti mysql serverio nustatymus pabandyk pasidomėti/pabandyti FULLTEXT indeksą;

Matai, paieška yra toks dalykas, kad jeigu nori padaryti ją labai gerą tai yra ką veikti.

Dažnai naudojamas paprastas algoritmas yra toks:
Dedant naujus duomenis į duomenų bazę, norimos reikšmės yra skaidomos į žodžius ir laikomos atskiroje lentelėjė su nuorodos ID į objektą, kuriame tas žodis rastas. O paieška atliekama tik tarp tos papildomos lentelės.

Re: Paieska duomenu bazeje

Dekui uz atsakyma.


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

4 (edited by DY 2008-01-10 02:56:19)

Re: Paieska duomenu bazeje

Galima taip:

WHERE (modelis LIKE '%$srch%'
OR modelis2 LIKE '%$srch%'
OR CONCAT(modelis, ' ', modelis2) LIKE '%$srch%'
OR kaina LIKE '%$srch%'
OR kaina1 LIKE '%$srch%')";

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.