Mit Hilfe der Tabelle Datenbank (TDB), Sie kann einfach eine Liste von Schlüsseln in einem Wert als Token speichern. Solange Ihre Schlüssel gültige "Tokens" sind, können Sie sie auf einfache Weise in einem einzigen Feld auflisten.
Hier ist ein Beispiel unter Verwendung von Pyrant ‚s Low-Level-Schnittstelle:
>>> 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 ist ein Operationstyp das steht für "string umfasst mindestens ein Token in ..."(siehe "tctdbqryaddcond" in Tokyo Cabinet API specs).
Beachten Sie, dass sowohl "abc, def" und "abc def" dem Schlüsselwort "abc" entsprachen, aber "abcdef" nicht, obwohl "abc" tatsächlich Teilmenge von "abcdef" ist. Dies kann verwendet werden Schlüssel in einem einzigen String gespeichert suchen, zB:
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',
}
(Stichworte sind wahrscheinlich nicht das beste Beispiel, wie sie benötigen keine Verweise sein.)
Wenn Sie ein verwenden TC-Datenbank anderer Art (nicht TDB), ich kann mir keine gültige Lösung vorstellen. Sie können diese Frage in der verwandten discussion group stellen.