Why don't my queries return any results?
Generally this means that the terms you are adding when indexing don't match those which your queries are using. The best way to investigate is to use Query::get_description() to see what terms you are querying for, then compare these with those which you have indexed by using the delve utility which is one of xapian-core's examples. For example, you can see the terms for document 1 using:
delve -r 1 /path/to/db
See delve --help or man delve for full details of how to use delve.
If you've recently upgraded to Xapian 1.0, and are using your own indexing routines, and searching with Xapian::QueryParser then you've been bitten by changes to the QueryParser in 1.0.0. In particular, the QueryParser now expects stemmed forms of words to be prefixed with "Z", and both stemmed and unstemmed forms to be present in the database (if you are using stemming). Also, note that you have to turn stemming on in the QueryParser explicitly, by calling QueryParser::set_stem_strategy() with either STEM_SOME or STEM_ALL.
Xapian 1.0.0 has a new TermGenerator class, which generates terms in a manner compatible with the QueryParser class. See http://www.xapian.org/docs/termgenerator.html for more details of the new term generation strategy.
Another possibility is a bug in the 1.0.0 and 1.0.1 releases which caused the QueryParser to generate incorrect terms when no stemmer was being used (they had a Z prefix, which should only be added to stemmed terms). This would cause searches to find no results (unless indexing was done using a custom term generator). This bug was fixed in 1.0.2.
