Why don't my queries return any results (or the results I expect)?
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() (or str(query) in Python)
to see what terms you are querying for, then compare these with those which
you have indexed by using the delve utility (one
of xapian-core's examples). For example, you can see the terms for document 1 using:
xapian-delve -r 1 /path/to/db
See xapian-delve --help or man xapian-delve for full details of
how to use xapian-delve. Note that in Xapian 1.2.x and earlier xapian-delve was
just called delve (though some packaged versions renamed it to xapian-delve).
If you wrote your own indexing routines for Xapian < 1.0.0, and you're
searching with Xapian::QueryParser then your problem is probably due
to 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 https://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.
