I kind of like the approach; 
I'm thinking whether we could have a hashmap of available filters: 
* 'filterPassThrough' for allowing duplicates,  
* 'filterDuplicates' for uniquity on articleid/userid pair
* 'filterByArticle' for uniquity on articleid
pass a filter explicitly to executeServiceQuery and get rid of $allowDuplicates completely in this call - it would be done by the service at filtering level.