RESTful xapian server needs help

German M. Bravo german.mb at gmail.com
Sun Feb 28 15:43:41 GMT 2016


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)



More information about the Xapian-discuss mailing list