Vinnaren i pepparkakshustävlingen!
2013-07-26, 11:38
  #1
Avstängd
Jag har en rätt klurig fråga.

Säg att jag har en databas med många företag i Sverige, med kolumnerna namn och stad.

Håller på att bygga sökfunktionen men får det inte riktigt som jag vill.

Jag vill exempelvis söka på "Apotek Västerås", frågan ser ut såhär:

Kod:
SELECT *, MATCH(namn, stad) AGAINST('apotek sala') as score FROM foretag WHERE MATCH (namn,stad) AGAINST('apotek sala') ORDER BY score DESC


Det finns totalt 1 apotek i Sala, vilket är det enda jag vill visa. Det frågan gör nu är att visa det rätta apoteket högst upp, följt med andra matchningar på antingen "apotek" eller "Sala"

Hur gör jag för att göra den smartare och ge mig mer exakta matchningar? Har nämligen så den visar antal träffar, och söker man på, i detta exempel, apotek sala och den visar hundratals så blir man som användare fundersam.

Använder FULLTEXT + MySQL

Mvh,
Citera
2013-07-26, 12:40
  #2
Medlem
christerys avatar
Hmm, provat med AGAINST ('+apotek +sala' IN BOOLEAN MODE)
http://dev.mysql.com/doc/refman/5.5/...t-boolean.html

Har inte nån mysql igång som jag kan leka med längre så du får väl testa.
Citera
2013-07-27, 11:09
  #3
Medlem
John-Pauls avatar
Citat:
Ursprungligen postat av jonssondesign
Jag har en rätt klurig fråga.

Säg att jag har en databas med många företag i Sverige, med kolumnerna namn och stad.

Håller på att bygga sökfunktionen men får det inte riktigt som jag vill.

Jag vill exempelvis söka på "Apotek Västerås", frågan ser ut såhär:

Kod:
SELECT *, MATCH(namn, stad) AGAINST('apotek sala') as score FROM foretag WHERE MATCH (namn,stad) AGAINST('apotek sala') ORDER BY score DESC


Det finns totalt 1 apotek i Sala, vilket är det enda jag vill visa. Det frågan gör nu är att visa det rätta apoteket högst upp, följt med andra matchningar på antingen "apotek" eller "Sala"

Hur gör jag för att göra den smartare och ge mig mer exakta matchningar? Har nämligen så den visar antal träffar, och söker man på, i detta exempel, apotek sala och den visar hundratals så blir man som användare fundersam.

Använder FULLTEXT + MySQL

Mvh,

Seg fråga ger segt svar:
select * from foretag where LOWER(namn) like 'apotek%' and stad like 'sala%'
pattern matching är ett helt kapitel
__________________
Senast redigerad av John-Paul 2013-07-27 kl. 11:22.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback