Добрый день. Совсем недавно увидел такую вещь как CouchDB и очень заинтересовался. Вот сейчас сижу играюсь, пытаюсь собрать информацию и дошел до задачи, выполнить которую не могу.
Суть такая, у меня есть документы вроде:
{
'_id': 'id_1' ,
'name': 'doc1',
'tags': ['tag1', 'tag2', 'tag3'],
..
}
{
'_id': 'id_2' ,
'name': 'doc2',
'tags': ['tag1', 'tag2', 'tag4'],
..
}
И я хочу, если это возможно сделать вид, который будет показывать похожие документы, для определенного, т.е. те документы, у которых больше всего тэгов совпадает с данным.
Сейчас у меня map возвращает данные в виде
tag1 doc_id
tag2 doc_id2
...
В reduce я их упрощаю, и сразу из reduce возвращаю для определенного тэга, список всех возможных пар документов с этим тэгом, каждая пара -- определяет вес связи между этим документом и связываемым.
Т.е. если map вернул:
tag1 doc_id1
tag1 doc_id2
tag2 doc_id1
tag2 doc_id2
tag3 doc_id2
tag3 doc_id3
То reduce вернет пары
doc_id1, doc_id2
doc_id2, doc_id1
doc_id1, doc_id2
doc_id2, doc_id1
doc_id2, doc_id3
doc_id3, doc_id2
По идее, если одинаковые пары суммировать, то там, где их большее количество -- соседний документ является самым "похожим". В данном случае пар doc_id1, doc_id2 (и обратных) -- 2 штуки, т.е. можно сделать вывод что doc_id1 похож на doc_id2. Вот только вопрос, где суммировать количество пар в паттерне MapReduce и реализации в CouchDB? Могу ли я еще раз рекурсивно вызвать reduce ? Или я все делаю неправильно? Или то что я хочу -- невозможно?
З.Ы. Допускаю что объясняюсь непонятно, ибо не спал оч долго.
Ответ на:
комментарий
от friday
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум couchdb (2009)
- Форум $tags (2012)
- Форум Tags (2003)
- Новости Apache CouchDB 1.3.0 (2013)
- Форум MapReduce без Hadoop (2021)
- Новости Вышел CouchDB 1.0 (2010)
- Форум relative url (2009)
- Форум related, established (2007)
- Форум А расскажите про couchdb (2014)
- Форум CouchDB как лучше сделать? (2011)