Voor een zoekmachine probeer ik een query te schrijven die matched op meerdere columns, voor meerdere termen. Als ik bijvoorbeeld zoek op "a b", wordt elk van de columns gematched tegen "a" en "b". Om te kunnen sorteren op relevantie wil ik tellen hoeveel van de zoektermen gevonden wordt in elke row.
Ter referentie en inspiratie heb ik deze pagina gebruikt, en de query die vanuit PHP gegenereerd wordt ziet er momenteel (grofweg) als volgt uit:
Het resultaat is dat hij wel matched tegen zowel "a" als "b", en tegen beiden. De waarde van occurrences blijft echter altijd 1, ongeacht het aantal van de zoektermen die in de velden voorkomt.
Iemand enig idee?
Ter referentie en inspiratie heb ik deze pagina gebruikt, en de query die vanuit PHP gegenereerd wordt ziet er momenteel (grofweg) als volgt uit:
MySQL:
1
2
3
4
5
6
7
8
| SELECT DISTINCT COUNT(*) AS occurrences, ID FROM tableName WHERE ( (field1 LIKE '%a%' OR field2 LIKE '%a%') OR (field1 LIKE '%b%' OR field2 LIKE '%b%') ) GROUP BY ID ORDER BY occurrences DESC, ID DESC |
Het resultaat is dat hij wel matched tegen zowel "a" als "b", en tegen beiden. De waarde van occurrences blijft echter altijd 1, ongeacht het aantal van de zoektermen die in de velden voorkomt.
Iemand enig idee?