Davide, thanks for your insights and questions. All of these are good
questions. Please see my responses below.
Davide Sottara wrote
If the structure of the constraints/filters the user can define remains
static, and only the values are changing, then a single rule with
parametric joins will be enough. E.g.:
Params( $cat : categorySet, $minPrice : minPrice, $maxPrice : maxPrice,
.... )
Product( category in $cat, price >= $minPrice && <= $maxPrice, num_ratings
... )
You'd then have to update the "Params" according to what the user e.g.
selects from a checkbox.
A "null" selection would then be converted e.g. categorySet = all
categories, minPrice = -infinity, maxPrice = +infinity etc...
This may work but I can see this a limitation in many cases.
Davide Sottara wrote
If, on the other hand, the user is completely free to create their own
rules, this strategy may not be applicable.
This is closer to what I want to do.
Davide Sottara wrote
Wouldn't then the bottleneck be the user writing/picking the rules
(seconds) rather than their compilation (a few milliseconds)? If so, you
might have "horizontal" scalability issues - allowing more and more users
to do this - rather than "vertical" ones - responding faster to a single
user.
Why do you think horizontal scalability is an issue ?
Davide Sottara wrote
If, instead, the criteria are built automatically by a software agent of
some sort, then the direct creation might be taken into consideration. You
can skip the parsing step by creating the Abstract Syntax Tree directly -
the compiler APIs ("Descrs") have a nice fluent structure.
Is parsing really expensive ? Do you have any idea of how much improvements
one can get by directly putting the rules into as AST.
Davide Sottara wrote
btw, what are your rules supposed to do as a consequence? Do you have
chaining? or actions?
If all you need is selection and filtering, I wonder if a production rule
system is the best option
for your application, or at least this sub-module...
For now I'm just using it for filtering. But in the future I can see how the
system can be extended to support other use cases with complex consequences.
Do you have any other solution in mind that can help address the use case
I'm trying to implement?
thanks again !
--
View this message in context:
http://drools.46999.n3.nabble.com/Is-there-a-faster-way-of-doing-this-in-...
Sent from the Drools: User forum mailing list archive at
Nabble.com.