On 5/1/2017 9:19 AM, Andy C wrote: > Your state that the best performing query that gives the desired results is: >> fq=ctindex:myId OR (*:* -ctindex:[* TO *]) > Is this because there some sort of optimization invoked when you use [* TO > *], or just because a single range will be more efficient than multiple > ranges ORed together?
There are fewer query clauses, so it takes less time. The "all values" range *might* perform faster than a range with a specific endpoint, although I'm not familiar enough with the code to say for sure. > I was considering generating an additional field "ctindex_populated" that > would contain true or false depending on whether a ctindex value is > present. And then changing the filter query to: > > fq=ctindex_populated:false OR ctindex:myId > > Would this be more efficient than your proposed filter query? Yes. Probably a lot more efficient. Boolean fields only have two possible values, so queries on those fields tend to be extremely fast. Thanks, Shawn