Статьи анализируются из RSS-канала, и каждая статья может относиться ко многим категориям. Кроме того, каждая статья имеет некоторые метаданные, такие как источник, основной поток и т. д.
Ниже показано, как мы разрабатываем пространства. Каждая статья вставляется в пространство статей.
место для статей
хеш-адрес | article.content
abcdef | { фиктивный контент}
URL-адрес первичного ключа = хэш (статья.url).
В поле category_articles мы вставляем статью несколько раз в зависимости от того, к скольким категориям она относится.
категория_статей
источник | категория | URL-адрес | отметка времени
bbc | искусство | статья1 | 27777
BBC | мобильный | статья8 | 27777
BBC | телефон | статья3 | 27778
новая | звук | статья7 | 36667
новая | динамик | статья7 | 45556
первичный ключ = {источник, категория, urlhash}
вторичный ключ = {источник, категория, отметка времени}
Мне нужны последние статьи для данного источника и возможной категории. Ниже показано, как я сформулировал запрос.
box.space.category_articles.index.secondary:select{{'nyt','speaker'},{ iterator = 'LE', limit = 5 }}
Теперь я получу в результате article7 дважды. В настоящее время я фильтрую повторяющиеся результаты в коде. Как я могу иметь отдельный тип (urlhash) в tarantool.