: I could have sworn I was paraphrasing _your_ presentation Hoss. I
: guess I did not learn my lesson well enough.
:
: Thank you for the correction.
Trust but verify! ... we're both wrong.
Boolean functions (like lt(), gt(), etc...) behave just like sum() -- they
"exist" for a document if and only if all the args exist for the document
-- and that's what matters for wether a '{!func}' query considers a
document a match. (if the function "exists" then the query "matches")
I think my second suggestion of using frange is the only thing that works
-- you have to explicitly use 'frange' which will only match a document if
the function "exists" *AND* if the resulting value is in the range...
fq={!frange l=0}sub(value,cost)
what would be nice is the inverse of the "exists()" function ... that
returns true/false depending on wether the function it wraps "exists" for
a document -- but is always a "match" for every doc. we need *something*
that can wrap a function that returns a boolean and only "exists" if the
boolean is true, otherwise it's considered a non-exists/match for the doc.
then you could do: fq={!func}something(gt(value,cost))
of perhaps just a nomatch()/noexist() function that takes no args and does
nothing but never exists/matches any doc .... then you could do...
fq={!func}if(gt(value,cost),42,nomatch())
?
-Hoss
http://www.lucidworks.com/