+3  A: 

How about changing how you index, instead of how you query?

Instead of trying to index "engine size doesn't matter" as an empty record, index it as "ANY".

Then your query simply becomes enginesize:"3.5" OR (enginesize:ANY)

ThoughtfulHacking
A: 

i've just been playing with this and found a hint that seems to do the trick for me. translated to your query it should be:

enginesize:"3.5" OR (-enginesize:["" TO *])

hth,

andi


update: after some more testing i don't think this works reliably — for some indexes it had to be the other way round and without the minus sign, i.e. enginesize:[* TO ""]. this might depend on the index type, if it's multi-valued or even on the actual values.

in any case it seems too much of a hack. i'll probably resolve to substituting the empty value with a special marker...

witsch