: I trying to do this: : : if (US_offers_i exists): : fq=US_offers_i:[1 TO *] : else: : fq=offers_count:[1 TO *]
"if()" and "exist()" are functions, so you would have to explicitly use them in a function context (ie: {!func} parser, or {!frange} parser) and to use those nested queries inside of functions you'd need to use the "query()" function. but nothing about your problem description suggests that you really need to worry about this. If a document doesn't contain the "US_offers_i" then US_offers_i:[1 TO *] won't match that document, and neither will US_offers_i:[* TO *] -- so you can implement the logic you describe with a simple query... fq=(US_offers_i:[1 TO *] (offers_count:[1 TO *] -US_offers_i:[* TO *])) Which you can read as "Match does with 1 or more US offers, or: docs that have 1 or more offers but no US offer field at all" : Also, there is a heavy performance penalty for this condition? I am : planning to use this for all my queries. Any logic that you do at query time, which can be precomputed into a specific field in your index will *always* make the queries faster (at the expense of a little more time spent indexing and a little more disk used). If you know in advance that you are frequently going to want to ristrict on this type of logic, then unless you index docs more offten then you search docs, you should almost certainly index as "has_offers" boolean field that captures this logic. -Hoss