Форум сайта python.su
ога, так и планирую. Multikeys наверно и делали в основном из-за тегов :)
Офлайн
А мне почему-то приходит в голову всякий NoSQL и map reduce. Не?
Офлайн
Edоно
А мне почему-то приходит в голову всякий NoSQL и map reduce. Не?
Офлайн
добавил 200К объектов:
db.events.save({ ‘data’:uuid.uuid1(), ‘tags’:random.sample(tt,5) }) в цикле
выборка 100 элементов идет быстро 0,016 сек
db.events.find({ ‘tags’: { ‘$all’: } }).limit(100)
а вот быстрый выбор тегов не придумал, пока сделал тормазнутый мап-редьюс (9сек):
def get_tags():
from pymongo.code import Code
map = Code(""" function() {
var ok = 0;
for(var i in this.tags) {
if(this.tags[i]=='a') ok += 1;
if(this.tags[i]=='b') ok += 1;
};
if(ok==2)
this.tags.forEach(
function(x) {
emit(x, 1);
}
);
}""")
reduce = Code("""function (key, values) {
var total = 0;
for(var i in values) total += values[i];
return total;
}""")
tags = db.events.map_reduce(map, reduce)
tags = list(tags.find().sort('value',DESCENDING).limit(100))
Офлайн
список тэгов можно хранить отдельно
Офлайн
я бы еще на redis посмотрео. у него есть поддержка сетов и всякие операции с ними. к тому же он зело шустр.
Офлайн
Edможно, есть идеи?
список тэгов можно хранить отдельно
Офлайн
o7412369815963Идей море :)Edможно, есть идеи?
список тэгов можно хранить отдельно
Офлайн
Edданный алгоритм не даст требуемого результата.
можно, например, хранить их в той же базе в виде tag:<tag name> - количество оттеженых документов и обновлять при любом изменении. Получим практически моментальную статистику по тэгам в обмен на усложнение обработки.
Офлайн
Если хотите помощи, то объясняйте свои … мнэ … выводы? догмы?.
Офлайн