WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Sökfunktion: Söka efter vissa ord (https://www.wn.se/forum/showthread.php?t=1054157)

jonssondesign 2012-07-13 05:13

Sökfunktion: Söka efter vissa ord
 
Hejsan! Försöker bygga en enkel sökfunktion men går inte riktigt som jag vill.

Jag vill kunna söka på flera ord i en string men som inte nödvändigtvis ligger efter varandra.

Såhär går det nu:

Riktiga ordet: hej på dig

går att söka:
hej

dig
hej på
på dig
hej på dig

Går inte att söka:
hej dig

kod:

PHP-kod:

$query "SELECT * FROM products WHERE ";

$query .= "title LIKE '%$search%' ";

$query .= "OR brand LIKE '%$search%' ";

$query .= "AND visible = 1 ";

$query .= "ORDER BY price DESC ";

$query .= "LIMIT $p_num , $items"

Antar att man skall använda onion och NOT LIKE, men får det fortfarande inte att fungera..

Någon som kan hjälpa mig och berätta hur jag skall göra? :)

Jag är nybörjare..

Tack!

nicclas 2012-07-13 17:44

Det blir mycket enklare om du använder MySQLs FULLTEXT index. Se http://dev.mysql.com/doc/refman/5.0/...xt-search.html eller exempel på t.ex. http://www.artfulcode.net/articles/f...arching-mysql/

Jimmit 2012-07-14 01:02

Jag brukar splitta upp frasen i enskilda ord och ge dem olika "rankingpoäng" med CASE WHEN. Första ordet får kanske 90, nästa 80, nästa 65 o.s.v. Således om ord 1 och 3 matchar en post har den 155 rankingpoäng, om ord 2 och 3 matchar så har de 145.

Man kan ju ge dem lika många poäng också men första ordet brukar vara mer relevant i de flesta lägen.

Galet trött så osäker på att jag gjorde någon poäng här, men du kanske förstår?

jonssondesign 2012-07-14 11:28

Tack nicclas, ska kolla på saken! :)

Jodå Jimmit, jag förstår tankesättet, men inte exakt hur man skulle lösa det rent tekniskt.

Får kolla mer på era lösningar, tack så mycket!


Alla tider är GMT +2. Klockan är nu 01:36.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson