Я пытаюсь выяснить, есть ли эффективный способ поиска в моих текущих структурах данных или мне нужно их реструктурировать.
У меня есть следующая структура для моих индексов:
- Публикация (атрибуты:
id
,title
,keywords
) - PublicationFile (атрибуты:
id
,publication_id
,text
,page_number
)
Публикация имеет много файлов публикации, файл публикации содержит содержимое файла и страницу, на которой он был найден (text
и page_number
).
title
, keywords
и text
являются доступными для поиска атрибутами, поэтому, если кто-то ищет «экономика», я хочу выполнить поиск по обоим моим индексам.
Я хотел бы выполнить поиск, который выполняет поиск по обоим индексам и возвращает результаты таким образом, который позволяет мне сделать что-то вроде этого:
Publication1
keyword1 keyword2
Found results in Publication1's file contents in: [file a (pages: 1, 2, 3), file b (pages: 5)]
Поэтому я хочу, чтобы поиск возвращал результаты, сгруппированные по идентификатору публикации. Единственный способ, который я могу придумать прямо сейчас, - это выполнить поиск по обоим индексам, а затем прокрутить результаты и связать совпадения файла/страницы с публикацией.
В общем, мои вопросы:
- Есть ли способ структурировать свои данные, чтобы избежать вложенных циклов для их обработки?
- Есть ли способ сделать это через Algolia без изменения моей структуры? В идеале я хотел бы повторно использовать поисковый код внешнего интерфейса Algolia и избегать обработки этих данных в моем внутреннем интерфейсе.