[Xapian-discuss] Remote databases and daemons
philipn at gmail.com
Mon Mar 27 06:42:17 BST 2006
I've looked over the docs on remote backends, the protocol, and a bit
of the c++ for doing distributed and remote searches. I've got a
couple of questions:
* The remote protocol is usable only as a Database, not as a
WriteableDatabase -- is this correct? So, if I don't want my
application to have a copy of the database on the same machine I'll
need to write an indexer daemon on the remote machine and talk to it
over TCP if i want to be able to remotely index?
* The socketserver.cc and the corresponding xapian-tcpsrv looks like
it blocks, even for reads. As far as I know, Xapian currently
supports "single-write, multiple-reads" of the database, which means
the tcpserver could be doing more. Am I mistaken in thinking that a
read will block another read with the tcp server?
I'm building an application that I'd love to have near-real-time
indexing, e.g. when a user saves a document it's sent to xapian.
That's how it works now, but it's on such a small scale that issues
like this don't matter. What's the easiest way to make this work?
Here's what I'm thinking: Write a small xapian-daemon server in
Python that listens on TCP and can index and search. Because xapian
can only do one write at a time (last i checked?) the server will keep
a queue of index requests and apply them in order/thread to avoid
blocking. Is this something that's useful or is there a more
xapiantic way to do this?
More information about the Xapian-discuss