Использование базы данных таблицы (TDB), вам может просто хранить список ключей в одном значении в качестве токенов. Пока ваши ключи являются действительными «токенами», вы можете легко перечислить их таким образом в одном поле.
Ниже приведен пример с использованием Pyrant «s низкоуровневого интерфейса:
>>> from pyrant import Tyrant
>>> t = Tyrant()
>>> includes = 5 # code for operation TDBQCSTROR
>>> t['test'] = {'foo': 'abc,def', 'bar': 'abc def', 'quux': 'abcdef'}
>>> t.proto.search([('foo',includes,'abc')])
[u'test']
>>> t.proto.search([('bar',includes,'abc')])
[u'test']
>>> t.proto.search([('quux',includes,'abc')])
[]
>>> t.proto.search([('quux',includes,'abcd')])
[]
>>> t.proto.search([('quux',includes,'abcdef')])
[u'test']
TDBQCSTROR является типом операции, которая выступает за„строка содержит, по меньшей мере, один маркер в ...“(смотрите„tctdbqryaddcond“в Tokyo Cabinet API specs).
Обратите внимание, что оба слова «abc, def» и «abc def» соответствовали ключевому слову «abc», но «abcdef» этого не делал, несмотря на то, что «abc» на самом деле является подмножеством «abcdef». Это может быть использовано для поиска ключей, хранящихся в одной строке, например:
t['tokyocabinet'] = {'title': 'Tokyo Cabinet'}
t['primary-key'] = {'title': 'Primary Key'}
t['question1228313'] = {
'title': 'how to build one to many rows in tokyo cabinet?',
'tags': 'tokyocabinet, primary-key',
}
(Метки, вероятно, не лучший пример, поскольку они не должны быть ссылки.)
Если вы используете База данных ТС другого типа (а не TDB), я не могу представить правильное решение. Вы можете задать этот вопрос в соответствующем discussion group.