В сценарии, ориентированном на NoSQL или на документ, у вас будут фактические теги как часть вашего документа, скорее всего, хранящиеся в виде списка. Поскольку вы пометили этот вопрос как "couchdb", я буду использовать его в качестве примера.
«Опубликовать» документ в CouchDB может выглядеть так:
{
"_id": <generated>,
"question": "Question?",
"answers": [... list of answers ...],
"tags": ["mysql", "tagging", "joins", "nosql", "couchdb"]
}
Затем, чтобы сгенерировать представление с тегами:
{
"_id": "_design/tags",
"language": "javascript",
"views": {
"all": {
"map": "function(doc) {
emit(doc.tags, null);
}"
}
}
}
В CouchDB вы можете выдать HTTP POST с несколькими ключами, если хотите. Пример в документации . Используя эту технику, вы сможете осуществлять поиск по нескольким тегам.
Примечание. Установка значения NULL, указанного выше, помогает сохранять небольшие размеры. Используйте include_docs=true
в своем запросе, если вы хотите видеть и фактические документы.