For the last year we have been working hard in releasing an open source RESTful
xapian server named Xapiand (https://github.com/Kronuz/Xapiand) that will offer
clustering, replication and some other neat features (similar to what
elasticsearch offers, but the final goals go beyond it); however, for our
Xapiand server to work, we need to have a few changes in xapian-core that are
**essential**.
Please help us. We have two options, but this is very important for us to get
either of one (preferably option A) committed for the next version of
xapian-core, otherwise the server wouldn't compile or wouldn't be fully
featured with out-of-the-box xapian and our efforts would have been useless for
the community for the whole time until the next stable version of xapian.
Option A: Re-implementing the remote protocol ourselves in our server, these are
the things that need to be patched in xapian-core (not a whole lot to change,
but there are some important things which would be essential)
1) **IMPORTANT** Add get_revision_info() in Database API (optionally guaranty
that, if returned, strings could be compared between revisions to know which
revision comes first, using string::compare or strcmp)
2) **IMPORTANT** Make a public MultiMatch API (to be able to re-implement the
remote protocol ourselves)
3) **IMPORTANT** Send selected database path using MSG_SELECT to the remote
protocol if REPLY_UPDATE returns with no database selected (that's what our
protocol would do)
4) *OPTIONAL* Add MSG_SELECT to remote protocol (as an example of what it's
for and to reserve the command number in the protocol)
Option B: Using a public RemoteProtocol API, these are the things that would
need to be patched in xapian-core (the remote protocol would be a rather big
change)
1) **IMPORTANT** Add get_revision_info() in Database API (optionally guaranty
that, if returned, strings could be compared between revisions to know which
revision comes first, using string::compare or strcmp)
2) **IMPORTANT** Make a public RemoteProtocol API (big change, moving files
around and making a new public API)
3) **IMPORTANT** Send selected database path using MSG_SELECT to the remote
protocol if REPLY_UPDATE returns with no database selected (that's what our
protocol would do)
4) *OPTIONAL* Add MSG_SELECT to remoteserver (as an example of what it's for
and to reserve the command number in the protocol)
As I said, I think I'd prefer option A and we are prepared to make a pull
request for either of the two. Please help us make this happen. We feel strongly
about getting this in xapian-core and about it allowing our Xapiand server to
lift off.
German M. Bravo (Kronuz)