Hi all,

Trying to debug a very sneaky bug in a small Solr extension that I
wrote, and I've come across an odd situation. Here's what my test
suite does:

deleteByQuery("*:*");
// add some documents
commit();
// test the search

This works fine. The test suite that exposed the error (which is
actually for a Ruby client library I maintain) was doing almost the
exact same thing, with one exception - the deleteByQuery() passed the
query "type:[* TO *]" instead of "*:*" (in an attempt to isolate the
error, I made sure that the input document and search parameters were
identical between the two test suites).

In the schema, the "type" field has at least one value for every
document (in practice it has more than one for all the documents in
this test suite). Changing the test setup code to pass "type:[* TO *]"
to deleteByQuery() causes it to fail.

So I'm a bit confused - wouldn't deleteByQuery("type:[* TO *]") have
the same effect as deleteByQuery("*:*"), assuming every document has a
value for the "type" field? Or is there something subtler going on in
the internals - perhaps optimizing the "*:*" deleteByQuery() to just
tear down the whole index and build a new one from scratch? Something
that might have some subtle side effect? Now that I'm finally able to
reproduce the error in my extension's test suite, I can start actually
figuring out what's causing it, but I was surprised to find out that
the deleteByQuery() query is what makes the difference between passing
and failing.

Any insight much appreciated!

Mat Brown

Reply via email to