Как создать пробелы в Tarantool с возможностью поиска по нескольким критериям
Наш вариант использования, как показано ниже
Мы будем получать статьи из источника.
Каждая статья имеет определенные метаданные. Метаданные имеют поле категорий, представляющее собой список названий категорий (мобильные телефоны, ноутбуки и т. Д.), В которые может попасть статья. Подобным образом метаданные имеют поле ключевых слов со списком ключевых слов, в которые может попасть статья.,
Ниже приведен запрос, который нам может понадобиться
a) Получить все статьи для данной категории и из определенного источника, местоположения. Источником и местоположением являются поля метаданных статьи.
б) Получить все статьи для данной категории, источника, места. в) Получить все статьи для данной категории, местоположения.
г) Получить все статьи по заданному ключевому слову, категории, местоположению.
Ниже описано, как мы проектируем пробелы. Поэтому, получая каждую статью, мы вставляем статью в пространство статей, а также вставляем в пространство category_articles и keyword_articles в зависимости от того, к каким категориям и ключевым словам относится данная статья.
Ниже приведены несколько запросов о том, как эффективно создавать вторичные индексы для заданных шаблонов запросов.
а) Для вторичного ключа {категория, источник, местоположение}, если мы пропустим определенные части во входном значении, совпадут ли строки, если другие части ключа равны? https://tarantool.org/doc/singlehtml.html
Я знаю, что мы не можем указать 1-ю и 3-ю часть во входных данных, т.е. {'category','location'} для ключа? или шуд у нас ноль на второй позиции.
б) Можем ли мы смоделировать схему лучше, чтобы эффективно запрашивать данные шаблоны?
статьи
urlhash
заглавие
содержание
URL
Дата
первичный ключ: {urlhash}
-
category_articles
Я бы
категория
источник
место нахождения
{Urlhash,..}
первичный ключ: {id}
вторичный ключ: {категория, источник, местоположение}
-
keyword_articles
Я бы
ключевое слово
категория
источник
место нахождения
{Urlhash,..}
первичный ключ: {id}
вторичный ключ: {ключевое слово, категория, источник, местоположение}
Обновления:
Запрос:
box.space.category_articles.index.secondary_key: выберите {'bollywoord', ноль, 'Индия'}
Ouput:
[1, 'bollywoord', 'ht', 'india', ['url1', 'url2']]
[3, 'bollywoord', 'ht', 'us', ['url3', 'url4']]
1 ответ
Вам нужно включить в индекс все поля, которые вы собираетесь использовать для поиска. Вы можете определить несколько вторичных индексов. Например, вы можете определить индекс по ключевому слову, категории, источнику и еще один по местоположению, категории, источнику. Все это прекрасные комбинации в дополнение к первичному ключу. Вы не можете искать в Tarantool по произвольной комбинации полей, если вы не строите для нее индекс.