Многопараметрический поиск совпадений с Redis

Мне нужно создать систему поиска совпадений для некоторого набора данных, как показано ниже:

Существует набор объектов, каждый из которых идентифицируется строкой ObjectID .

Каждый объект имеет ровно N свойств P i . Каждое значение свойства представляет собой строку.

Пример базы данных для N = 3 (в реальной жизни N = 8).

ObjectID: P1     P2    P3
--------------------------------
APPLE:    RED    ROUND FRUIT
ORANGE:   ORANGE ROUND FRUIT
CARROT:   RED    LONG  VEGETABLE

Система должна возвращать наборы из ObjectID s, соответствующие заданному запросу по свойствам объекта. В запросе пользователь должен указать все значения свойств. В качестве альтернативы, для некоторых или всех свойств в запросе пользователь может указать «подстановочный знак» * , означающий, что любое значение свойства будет соответствовать критериям.

Примеры запросов:

P1  P2    P3        => Result
------------------------------------
*   ROUND FRUIT     => APPLE, ORANGE
RED LONG  VEGETABLE => CARROT
RED *     *         => CARROT, APPLE

Все это тривиально делается с помощью SQL.

Вопрос в том, есть ли удобный способ сделать это с помощью Redis?

Обратите внимание, что меня интересуют решения на основе Redis специально для целей самообразования; другие БД по этому конкретному вопросу оффтопы.

Обновление: Тривиальное решение с явными списками ObjectID для каждого P i и фильтрацией на стороне приложения мне не кажется достаточно приятным: -)

7
задан Alexander Gladysh 29 October 2011 в 14:24
поделиться