Поддерживает ли полнотекстовый поиск индексы без схемы?

Я пытаюсь использовать API поиска Appengine, чтобы пользователи могли выполнять запросы к нескольким наборам данных, каждый из которых имеет свою собственную схему. Более конкретно:

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

Я бы хотел, чтобы пользователи могли выполнять поиск по всем своим наборам данных с помощью одного запроса к API поиска. Если я создаю документ для каждой строки в каждом наборе данных, я подозреваю, что при объединении всех полей в каждом наборе данных будет более 1000 различных полей (где поле = столбец).

Как я могу обойти это? Или мне нужно будет создать несколько индексов (по одному для каждого набора данных) и выполнить несколько запросов? Могут ли эти множественные запросы выполняться параллельно? Каковы минусы / затраты такого подхода?

1 ответ

Решение

Хорошей отправной точкой являются документы Python, поскольку базовая структура та же. Сказав, что YMMV здесь как сторона Java все еще экспериментальная.

Не все записи должны быть одного типа в вашем документе. Все, что вам нужно, это перейти от document_id к вашему объекту, поэтому : здесь хорошо. Однако, согласно документам,

В настоящее время существует ограничение в 1000 именованных полей для каждой данной схемы индекса.

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

Другие вопросы по тегам