2017-04-19 1 views
0

Les articles sont analysés à partir d'un flux rss et chaque article pourrait tomber dans de nombreux categories.Also chaque article a des métadonnées telles que la source, en amont, etc.Comment obtenir l'option DISTINCT dans une requête tarantool

Voici comment nous sommes la conception des espaces.Chaque article est inséré dans l'espace des articles.


articles espace

urlhash | article.content
abcdef | {contenu fictif}

clé primaire urlhash = hash (article.url).


Dans l'espace category_articles nous insérer l'article à plusieurs reprises en fonction du nombre des catégories tombe dans

category_articles

sources | catégorie | urlhash | horodatage
bbc | arts | article1 | 27777
bbc | mobile | article8 | 27777
bbc | téléphone | article3 | 27778
nyt | son | article7 | 36667
nyt | haut-parleur | article7 | 45556

clé primaire = {source catégorie, urlhash}
clé secondaire = {source catégorie, horodatage}

J'ai besoin derniers articles pour une source donnée et une possible category.Below comment je formulé la question.

box.space.category_articles.index.secondary: sélectionnez {{ 'New York Times', 'orateur'}, {iterator = 'LE', limite = 5}}

Maintenant, je vais faire deux fois dans le article7 En ce moment, je filtre les résultats en double dans le code. Comment puis-je avoir un type d'option distinct (urlhash) dans tarantool.

Répondre

0

Où est deux options possibles

  1. Le premier est tout filtrage au niveau du côté client.
  2. Le second utilise la procédure stockée Lua. Un exemple:

    fonction select_with_distinct() ca locale = box.space.category_articles pour _, v par paires (ca.index.secondary: sélectionnez {{ 'New York Times', 'orateur'}, {iterator = 'lE', limite = 5}}) ne - filtring ... fin fin

+0

Oui, mais cela est encore limitée dans le sens des 5 articles retournés pour limite = 5, nous pourrions avoir beaucoup duplicates.What que je cherchais était un meilleur moyen de spécifier une limite pour articles uniques. – crackerplace

0

j'ai pu trouver une meilleure solution en utilisant la fonction de paires sur l'index, puis filtrer les articles (suivre les uniques en utilisant une table lua) jusqu'à ce que je reçois le nombre unique d'articles.

index_object:pairs([key[, iterator-type]])