Нам нужна помощь в разработке полнотекстового поиска с помощью BigTable (скажем, структуры JSON-документов) и поддержки AND
логических запросов
Для поддержки OR
мы считаем, что наш дизайн относительно хорош, схема какнапример:
Формат ключей строк:
json.field_type_1:value1
: doc_ids_family {«docid1», «docid2», «docid3», ...} json.field_type_1:value2
: doc_ids_family {«docid2»,«Docid4», «docid5», ...} json.field_type_2:value1
: doc_ids_family {«docid1», «docid4», «docid6», ...} json.field_type_1:value2
: doc_ids_family {«docid6», «docid7», «docid8»", ...}
Где у каждой строки есть семейство столбцов с тысячами (или миллионами) столбцов, где ключом является идентификатор документа (пустой байт [])
Простое сопоставление ИЛИ является эффективным O(1)
, а затем мы разбиваем на страницы
Но находим пересечение столбцов (идентификаторы документов, которые имеют правильное значение для 2 типов, составляют, по сути, O(n)
документов - для этого требуется полный диапазон столбцовсканирование мы могли бы пройти через тысячи столбцов передвыровнять их
Мы не можем полагаться на наличие вторичной индексной таблицы, поскольку число критериев (число полей, которые может содержать запрос AND
, определяется пользователем, и мы заранее не знаем числополей / значений - они токенизированы из документов JSON)
Спасибо за любой совет