Match against mit mehreren values und Relevanzfilter, geht das?
Hallo Datenbankspezis,
ich habe im Moment eine Abfrage die einen String mit einer Spalte vergleicht, und nur die Ergebnisse mit den beiden höchsten Relevanzwerten wiedergibt. Das klappt wunderbar. Etwas gekürzt sieht das so aus:
Erste Frage wie, bzw. kann ich den zweiten Teil der SELECT Max Anweisung kürzen. Denn es ist ja praktisch der Pendant zu der oberen.
Der nächste Schritt ist eine erweiterung der Abfrage zu mehreren Values. in etwa so:
Na ja das haut hinten und vorne nicht hin. Später soll das ganze noch dynamisiert werden also value 1-n und Rel 1-n. Aber ich denke der Aufbau so ist falsch und in der vorhandenen Form unbrauchbar.
Vielleicht kann sich Jemand, der sich da besser auskennt, erbarmen
und mir zeigen wie es richtig geht.
Danke schon einmal Tribbi
Hallo Datenbankspezis,
ich habe im Moment eine Abfrage die einen String mit einer Spalte vergleicht, und nur die Ergebnisse mit den beiden höchsten Relevanzwerten wiedergibt. Das klappt wunderbar. Etwas gekürzt sieht das so aus:
SQL:
SELECT result.* FROM
(
SELECT A.TITLE as title
MATCH(A.TITLE) AGAINST('$value1' IN BOOLEAN MODE) AS REL
FROM Daten AS A) as result
WHERE result.REL >=
(
(SELECT Max(rel_max.RELA) FROM
(SELECT A.TITLE as title
MATCH(A.TITLE) AGAINST('$value1' IN BOOLEAN MODE) AS RELA
FROM Daten AS A) as rel_max)-1)
Erste Frage wie, bzw. kann ich den zweiten Teil der SELECT Max Anweisung kürzen. Denn es ist ja praktisch der Pendant zu der oberen.
Der nächste Schritt ist eine erweiterung der Abfrage zu mehreren Values. in etwa so:
SQL:
SELECT result.* FROM
(
SELECT A.TITLE as title
MATCH(A.TITLE) AGAINST('$value1' IN BOOLEAN MODE) AS REL, MATCH(A.TITLE) AGAINST('$value2' IN BOOLEAN MODE) AS REL2,
FROM Daten AS A) as result
WHERE result.REL >=
(
(SELECT Max(rel_max.RELA) FROM
(SELECT A.TITLE as title
MATCH(A.TITLE) AGAINST('$value1' IN BOOLEAN MODE) AS RELA
FROM Daten AS A) as rel_max)-1)
OR
result.REL2 >=
(
(SELECT Max(rel_max2.RELA2) FROM
(SELECT A.TITLE as title
MATCH(A.TITLE) AGAINST('$value2' IN BOOLEAN MODE) AS RELA2
FROM Daten AS A) as rel_max2)-1)
Na ja das haut hinten und vorne nicht hin. Später soll das ganze noch dynamisiert werden also value 1-n und Rel 1-n. Aber ich denke der Aufbau so ist falsch und in der vorhandenen Form unbrauchbar.
Vielleicht kann sich Jemand, der sich da besser auskennt, erbarmen

Danke schon einmal Tribbi
Zuletzt bearbeitet von einem Moderator: