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

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

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

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

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


person aloo    schedule 06.09.2012    source источник


Ответы (1)


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

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

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

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

person Jason Tholstrup    schedule 18.09.2012