Ik heb een query gemaakt die gebruikt maakt van de relevance functie in mysql met full text searching.
Daarnaast heb ik voor een paar colums aangegeven dat er meer relevantie toegekend dient te worden indien ze in de desbetreffende column gevonden worden.
Dit werkt prima alleen heb ik een probleempje met het sorteren van de resultaten.
Standaard sorteert hij dus op relevantie. Nu wil ik dat eerst alle gegevens uit de 2de query worden getoond (na de UNION dus) en daarna uit de eerste. Hoe kan ik dit aanpakken?
Ik probeerde te sorteren op url omdat de 2de query geen urls heeft en de 1ste wel, toch sorteert hij op relevantie.
Iemand een idee?
Daarnaast heb ik voor een paar colums aangegeven dat er meer relevantie toegekend dient te worden indien ze in de desbetreffende column gevonden worden.
Dit werkt prima alleen heb ik een probleempje met het sorteren van de resultaten.
Standaard sorteert hij dus op relevantie. Nu wil ik dat eerst alle gegevens uit de 2de query worden getoond (na de UNION dus) en daarna uit de eerste. Hoe kan ik dit aanpakken?
Ik probeerde te sorteren op url omdat de 2de query geen urls heeft en de 1ste wel, toch sorteert hij op relevantie.
Iemand een idee?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| SELECT id, url, titel, omschrijving, sortorder, CASE WHEN omschrijving LIKE '%kleding%' THEN 1 ELSE 0 END AS keywordmatch, CASE WHEN titel LIKE '%kleding%' THEN 2 ELSE 0 END AS contentmatch, MATCH ( url, soort, titel, omschrijving, regio, afzetgebied ) AGAINST ( 'kleding' ) AS relevance FROM object WHERE MATCH ( url, soort, titel, omschrijving, regio, afzetgebied ) AGAINST ( 'kleding' IN BOOLEAN MODE ) HAVING relevance >0 UNION ( SELECT advid, url, titel, omschrijving, sortorder, CASE WHEN omschrijving LIKE '%kleding%' THEN 1 ELSE 0 END AS keywordmatch, CASE WHEN titel LIKE '%kleding%' THEN 2 ELSE 0 END AS contentmatch, MATCH ( url, soort, titel, omschrijving, regio, afzetgebied ) AGAINST ( 'kleding' ) AS relevance FROM aanvraag WHERE MATCH ( url, soort, titel, omschrijving, regio, afzetgebied ) AGAINST ( 'kleding' IN BOOLEAN MODE ) HAVING relevance >0 ) ORDER BY keywordmatch DESC , contentmatch DESC , relevance DESC , url DESC LIMIT 0 , 10 |
20 jaar, en wat had ik bereikt?