Database Reference
In-Depth Information
cube _ enlarge
----------------
(0, 0),(2, 2)
Dieses Prinzip gilt für beliebige Dimensionen. Mit unserem begrenzten Hy-
percube können wir den speziellen Cube-Operator @> nutzen, der enthält be-
deutet. Die folgende Query findet die Distanz aller Punkte, die in einem Fünf-
Einheiten-Cube vom Star Wars -Genre-Punkt entfernt ist
SELECT title, cube _ distance(genre, '(0,7,0,0,0,0,0,0,0,7,0,0,0,0,10,0,0,0)' ) dist
FROM movies
WHERE cube _ enlarge( '(0,7,0,0,0,0,0,0,0,7,0,0,0,0,10,0,0,0)' ::cube, 5, 18) @> genre
ORDER BY dist;
title | dist
------------------------------------------------+------------------
Star Wars
|
0
Star Wars: Episode V - The Empire Strikes Back |
2
Avatar
|
5
Explorers
| 5.74456264653803
Krull
| 6.48074069840786
E.T. The Extra-Terrestrial
| 7.61577310586391
Mittels eines Subselects können wir das Genre über den Filmnamen bestim-
men und unsere Berechnung über dieses Genre mit Hilfe eines Tabellen-
Alias durchführen.
SELECT m.movie _ id, m.title
FROM movies m, ( SELECT genre, title FROM movies WHERE title = 'Mad Max' )s
WHERE cube _ enlarge(s.genre, 5, 18) @> m.genre AND s.title <> m.title
ORDER BY cube _ distance(m.genre, s.genre)
LIMIT 10;
movie _ id | title
----------+----------------------------
1405 | Cyborg
1391 | Escape from L.A.
1192 | Mad Max Beyond Thunderdome
1189 | Universal Soldier
1222 | Soldier
1362 | Johnny Mnemonic
946 | Alive
418 | Escape from New York
1877 | The Last Starfighter
1445 | The Rocketeer
Diese Methode der Film-Empfehlung ist nicht perfekt, aber ein sehr guter
Anfang. Weitere dimensionale Queries werden wir in späteren Kapiteln noch
sehen, z. B. die zweidimensionale geographische Suche in MongoDB (siehe
5.4, Genre als mehrdimensionale Hypercubes , auf Seite 187).
Search WWH ::




Custom Search