Nano Hash - криптовалюты, майнинг, программирование

ArangoDB получает все уникальные теги из результатов

У меня есть документ в ArangoDB. { title: "title 12345", tags : ["tagx", "tagy", "tagz"}

  1. У меня есть полный текстовый индекс для title и еще один хэш-индекс для tags[*].

  2. У меня есть запрос, в котором я хочу использовать полнотекстовый поиск по title и применить некоторую фильтрацию через tags и получить skip x limit 10 в результатах. Я могу добиться этого. Это поможет мне в пагинации. За один вызов API я могу вернуть пользователю 10 элементов.

  3. Тем не менее, я также хочу получить все уникальные теги, которые присутствуют в результате (без ограничения пропуска и ограничения), не затрагивая все документы, представленные в результате. Это поможет мне показать теги, которые пользователь может дополнительно выбрать, чтобы сузить поиск.

Можно предположить, что в базе будет небольшое количество уникальных тегов (около 30-40). Есть ли эффективный способ добиться этого в ArangoDB? Возможно, мы можем создать несколько новых индексов или изменить схему для достижения этой цели.


Ответы:


1

Предполагая, что вы собираетесь создать коллекцию документов с именем test со следующим содержимым

введите здесь описание изображения

Просто для воспроизводимости данные, которые я вставляю:

[{"_key":"342","_id":"test/342","_rev":"504","tags":["tagx","tagy","tagz"],"title":"title 12345"},{"_key":"564","_id":"test/564","_rev":"591","tags":["tagx","tagy","tagt"],"title":"title another"},{"_key":"510","_id":"test/510","_rev":"538","tags":["tagh","tagk","tagz"],"title":"title 56789"}]

Если вы выполните следующий запрос AQL

let tags = (for i in test
return i.tags)[**]

return unique(tags)

Это вернет

[
  [
    "tagk",
    "tagh",
    "tagt",
    "tagz",
    "tagy",
    "tagx"
  ]
]

Как видите, в нескольких документах повторяются разные теги, и результаты показывают массив только с уникальными тегами.

17.07.2020
  • Это не то, чего я хотел. Если вы профилируете этот запрос, вы увидите, что он попадет в каждый документ в результате. 17.07.2020
  • Извините, не могли бы вы уточнить критерии фильтрации или пропуска документа? Спасибо 17.07.2020
  • Я обновил вопрос с дополнительным разъяснением и вариантом использования. 17.07.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..