[ 
https://issues.apache.org/jira/browse/COUCHDB-249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13200441#comment-13200441
 ] 

Christoph Zrenner commented on COUCHDB-249:
-------------------------------------------

Hi all, I've been using CouchDB for about 6 months now (an amazing technology) 
and we implemented a "prediction engine" using a bayesian classifier inside a 
view. The parameters for the machine learning algorithm is in a commonjs array 
and every 24 hours we modify the parameters based on updates from the manual 
verified training data added that day (like in spam/ham classification), so 
then the view is rebuilt. It seems like this might be a use case that would be 
well served with chained views, so I'm adding it here to this ticket:

So after the predictions are calculated, there are then a bunch of further 
analytics calculation that happen based on the predicted data, but the 
predictions are only temporary (the prediction parameters are updated every 
24h). Right now, I'm doing the same bayes prediction calculation in each of the 
analytics views (inside a commonjs function "BayesPredictor") but this means 
that the same calculations are performed for each analytics view.

Chaining the temporary and computationally intense prediction calculation 
output with a subsequent analysis view "feels" like it might be a good solution 
for this problem. I'm reluctant to write the predictions into another database 
as in the cloudant solution, if I was to go that route, then I think I may as 
well just keep updating my source documents by going through all_documents and 
updating the predictions on each document every 24h.

Would very much appreciate any views on whether this is a "valid" use-case for 
native chained views and any advice on how I might implement this! Thanks.
                
> Treat output rows of views as documents for other views to build upon
> ---------------------------------------------------------------------
>
>                 Key: COUCHDB-249
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-249
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: Database Core, Infrastructure, JavaScript View Server
>            Reporter: Joey Lawrance
>         Attachments: couch_view_updaer.erl.patch.txt, couch_view_updater.erl
>
>
> Unless I manually copy the JSON rows of a view into a new document, I am 
> unable to create new views that are computed from existing views. That is, it 
> seems as if views are second class citizens compared to first-class documents.
> Suppose I wanted to find the spread between the cheapest suppliers and the 
> most expensive suppliers of each fruit. I know it's possible to use one 
> map/reduce to compute such a view, but I'd like to be able to re-use my 
> existing "cheapest" and "costliest" views. That is, I'd like to use the 
> document output of these views as input into another view.
> I started with the simple fruit store example in the CouchDB book. I 
> developed a simple view called "cheapest" with the following map and reduce 
> functions (the "costliest" view is the same as "cheapest" but except the 
> reduce function's comparison is the other way around):
> function(doc) {
>     var store, price, key;
>     if (doc.item && doc.prices) {
>         for (store in doc.prices) {
>             price = doc.prices[store];
>             key = doc.item;
>             emit(key, {store:store, price:price});
>         }
>     }
> }
> function(item,store) {
>   var m = store[0];
>   for (i in store) {
>     if (m.price > store[i].price) m = store[i];
>   }
>   return m;
> }
> The output is as follows:
> {"rows":[
> {"key":"apple","value":{"store":"Apples Express","price":0.79}},
> {"key":"banana","value":{"store":"Price Max","price":079}},
> {"key":"orange","value":{"store":"Citrus Circus","price":1.09}}
> ]}
> I'd like to develop a new view whose input is the output of the view above, 
> but as far as I can tell, views only operate on documents, not the output of 
> existing views. Am I missing something?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to