2013-01-01 5 views
1

Disons que je veux tous les films dans lesquels au moins deux (différents) acteurs appelés « John » joué:requête Freebase avec plusieurs éléments enfants uniques

Example query:

[{ 
    "type":"/film/film", 
    "name":null, 
    "limit":10, 
    "/film/film/initial_release_date":"2005" 
    "starring":[{ 
    "a:actor": [{ 
     "type": "/film/actor", 
     "name": null, 
     "name~=": "John", 
    }], 
    "b:actor": [{ 
     "type": "/film/actor", 
     "name": null, 
     "name~=": "John", 
    }] 
    }] 
}] 

Si vous exécutez le Exemple de requête, vous verrez qu'il va lister les films avec seulement un "John" en eux. Comment puis-je corriger ma requête pour exclure ces résultats avec des enfants dupliqués?

Répondre

3

En général, vous devrez effectuer le filtrage côté client; Les requêtes dans MQL sont "arborescentes" en ce qu'une partie de la requête ne peut pas faire référence à une autre partie plutôt que d'être un graphique générique.

Dans ce cas, vous pouvez rechercher des films comportant plus d'un "John"; cependant, MQL ne vous permet pas de filtrer sur une propriété dérivée comme "count", donc le mieux que vous pouvez faire est de reverse sort based on the count et puis arrêtez le traitement dès que vous frappez la première entrée avec "count": 1. Cependant, cette requête expire si vous supprimez la date de publication fixe de 1935 (le tri en MQL tue les performances), vous êtes donc probablement bloqué avec un simple filtrage côté client.

+0

Merci, cela semble fonctionner à merveille, je n'étais pas au courant de la notation point dans '" sort ":" -starring.count "'. – biziclop

+0

Les résultats sont en quelque sorte minces, je pense que ça manque des résultats, mais je ne pense pas que ça pourrait être mieux, alors j'accepte ta réponse :) – biziclop

+0

Si tu as un exemple de film tu penses que cette requête devrait être trouvée mais n'est pas t, je peux essayer d'expliquer pourquoi il ne le trouve pas et peut-être même modifier la requête pour l'attraper. –

Questions connexes