Return-Path: Delivered-To: apmail-incubator-couchdb-user-archive@locus.apache.org Received: (qmail 89962 invoked from network); 1 Dec 2008 07:39:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Dec 2008 07:39:45 -0000 Received: (qmail 36349 invoked by uid 500); 1 Dec 2008 07:39:55 -0000 Delivered-To: apmail-incubator-couchdb-user-archive@incubator.apache.org Received: (qmail 36315 invoked by uid 500); 1 Dec 2008 07:39:55 -0000 Mailing-List: contact couchdb-user-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: couchdb-user@incubator.apache.org Delivered-To: mailing list couchdb-user@incubator.apache.org Received: (qmail 36304 invoked by uid 99); 1 Dec 2008 07:39:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 30 Nov 2008 23:39:55 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of ben@groovie.org designates 85.10.207.234 as permitted sender) Received: from [85.10.207.234] (HELO unicron.groovie.org) (85.10.207.234) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Dec 2008 07:38:26 +0000 Received: from c-24-130-69-255.hsd1.ca.comcast.net ([24.130.69.255] helo=Shaggy.home.groovie.org) by unicron.groovie.org with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.69) (envelope-from ) id 1L73N7-0008Q9-UG for couchdb-user@incubator.apache.org; Sun, 30 Nov 2008 23:39:11 -0800 Message-Id: From: Ben Bangert To: couchdb-user@incubator.apache.org Content-Type: multipart/signed; boundary=Apple-Mail-4-701839012; micalg=sha1; protocol="application/pkcs7-signature" Mime-Version: 1.0 (Apple Message framework v929.2) Subject: Ordering by values calculated by a map/reduce Date: Sun, 30 Nov 2008 23:39:01 -0800 X-Mailer: Apple Mail (2.929.2) X-Spam-Score: -4.0 (----) X-Spam-Report: Spam detection software, running on the system "unicron.groovie.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I want to solve what I thought was a fairly simple problem, though unfortunately it seems to be rather tricky. I asked on the IRC channel, and got some good input, but neither really seemed like a very good solution. [...] Content analysis details: (-4.0 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.8 ALL_TRUSTED Passed through trusted hosts only via SMTP -2.6 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000] 0.4 AWL AWL: From: address is in the auto white-list X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail-4-701839012 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit I want to solve what I thought was a fairly simple problem, though unfortunately it seems to be rather tricky. I asked on the IRC channel, and got some good input, but neither really seemed like a very good solution. The problem: I want to allow users to rate things. They do this very very frequently, so I can't store it in the actual document being rated, so I have Rating documents. It's easy enough to write a map/reduce that gives me the computed average rating for a given document, however, it seems to be impossible to get a listing of the highest rated documents, as I can only get the computed rating for a document one at a time. The possible solutions: - Buffer rating additions, then at a later time, run through them and calculate the new average rating, store it in the document as computed_rating, so I can order on that in the key - Cron a job that goes in and looks for new rating every 5 mins or whatever, and then does the same as the previous solution by storing it in a computed_rating field I'm not a fan of either of these, because #1 means if my webapp hiccups, I lose ratings, and #2 is just a pain to keep sweeping the db for new Rating documents then going through updating all the documents. Is there really no other solutions that don't require me to store the computed rating in the doc itself? There's no way I can perhaps order on the value from the map/reduce, rather than only being able to order on the key? Thanks, Ben --Apple-Mail-4-701839012 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGfTCCAzYw ggKfoAMCAQICEClzcfApE1Xl0tE8fQf6InIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA4MDUyMzIyMDUzNVoXDTA5MDUyMzIyMDUz NVowZjEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEjMCEGCSqGSIb3DQEJARYUYmJh bmdlcnRAZ3Jvb3ZpZS5vcmcxHjAcBgkqhkiG9w0BCQEWD2JlbkBncm9vdmllLm9yZzCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMAxyJSHPp0a6b6jg37ULZHv6Vh+ZthZh0LIACrEkeDU KT2Gop2+h7wuoZNRSOLGSijSuMmYL9whUZmDLefzwkU8/yL7Ya6dh+QE3L0TM2nGqhF1v6/uzQaN cYukSeWkRMx2QrRGpu5npDWUsMN8vKMziDlVpjpQKDfnupVFa34vhWpavJliaDh4KbPBBfesR3Xg wEdgwOmhfL/lgDNdO8SHtZ3+s/ysf095eM5b2IP+kLyF2t/NOFTA3zIWbjOAIGyyxyt7J2x1oEAT 1VlATLQ0+DQhh4UZS/PIJpJsOGxttjfqKTTbXivBDDUEq843wz4L0X5YZlv4ky8vAj1bolsCAwEA AaNlMGMwDgYDVR0PAQH/BAQDAgP4MBEGCWCGSAGG+EIBAQQEAwIFIDAwBgNVHREEKTAngRRiYmFu Z2VydEBncm9vdmllLm9yZ4EPYmVuQGdyb292aWUub3JnMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN AQEFBQADgYEAArp/WahHEAzWmCz+VUX1PmjwbxRTy9T0z6Z52EUbvrU9mnOPHTC0hgHXYzMtEKW5 8apV7CnoHyFucbYfqJi+R3xx+4x5M7e+Oj+7JWhxjKH+aXsL1eI1ialOenSDq9VKhyUuF2lCrFIm fTsG+h02NRZyMYQ/OskM0ReNFALAEygwggM/MIICqKADAgECAgENMA0GCSqGSIb3DQEBBQUAMIHR MQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24x GjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZp Y2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgQ0ExKzApBgkq hkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNMDMwNzE3MDAwMDAwWhcN MTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcg KFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0Ew gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVzVftOucqZWh5owHUEcJ3f6f+jHuy9zfVb 8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Vaqj9xVsuvPAsH5/EfkTYkKhPPK9Xzgnc9 A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20TxhBEAeZBlyYLf7AgMBAAGjgZQwgZEwEgYD VR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLnRoYXd0ZS5jb20v VGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDALBgNVHQ8EBAMCAQYwKQYDVR0RBCIwIKQeMBwx GjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4MA0GCSqGSIb3DQEBBQUAA4GBAEiM0VCD6gsuzA2j ZqxnD3+vrL7CF6FDlpSdf0whuPg2H6otnzYvwPQcUCCTcDz9reFhYsPZOhl+hLGZGwDFGguCdJ4l UJRix9sncVcljd2pnDmOjCBPZV+V2vf3h9bGCE6u9uo05RAaWzVNd+NWIXiC3CEZNd4ksdMdRv9d X2VPMYIDEDCCAwwCAQEwdjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRp bmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3Vpbmcg Q0ECEClzcfApE1Xl0tE8fQf6InIwCQYFKw4DAhoFAKCCAW8wGAYJKoZIhvcNAQkDMQsGCSqGSIb3 DQEHATAcBgkqhkiG9w0BCQUxDxcNMDgxMjAxMDczOTAyWjAjBgkqhkiG9w0BCQQxFgQUkT5fc2EM UpnjFLfcBzDlRoHphNQwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBG cmVlbWFpbCBJc3N1aW5nIENBAhApc3HwKRNV5dLRPH0H+iJyMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq BgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhApc3HwKRNV5dLRPH0H +iJyMA0GCSqGSIb3DQEBAQUABIIBAAvA05pC2TqYoIVTEiR0wOAhvjbN1aaT+qPX87vtPSCMgoKl P7amRKi0eIjQFoohnlHHWdw9l0e6f8sSa8N/27n7nuYx4lMdG8Q/EQJsepTixhf0CVp/S4C6ma6z 4BrNk5+LZtk2UMZgMKD5/CmY/UAcLUg076IIPHh7gdV8X6n3qXKky/B/GP8j94rTzkjDu1DkqgUo DIso54ToOYE5lY4f+fmxT39G349gIsF646sNTkCzf9oZKoS1e6Fy55l6JKn6Ti2oxMGkQ8hPA5pW 97I8jrNcAtamoT3c3/vGXqfK4qzpRE6prFYj/RihmGISM+L4jeYsY1ekHP5z+ftr8BUAAAAAAAA= --Apple-Mail-4-701839012--