[Xapian-discuss] Node.js binding

Liam xapian at networkimprov.net
Thu Oct 20 06:31:23 BST 2011


On Wed, Oct 19, 2011 at 7:08 PM, Olly Betts <olly at survex.com> wrote:

> On Wed, Oct 19, 2011 at 10:09:41AM -0700, Liam wrote:
> > I've started an initial pass on this binding, to implement just the
> above.
> > However I need some guidance on which methods do I/O and therefore block.
>
> Pretty much anything which uses data from the database potentially can,
> especially if the remote backend is involved.  It's probably easier to
> say what won't (like Xapian::Stem, at least until someone adds a stemmer
> which uses a disk-based dictionary...)
>
> I guess long computations matter too (though I'm not sure what there is
> in Xapian that can do long computations which doesn't also potentially
> do I/O).
>
> If we had a macro to mark "fast" methods in the headers, we could use a
> script to pull out a list.  That would also be of use in the Python
> bindings as we wouldn't need to worry about releasing the GIL while
> calling such methods.
>
> Cheers,
>     Olly
>

Do any of these potentially hit the disk? I'd guessed that none of them
did...
  Enquire::Enquire(database)
  Query::Query(...);
  Enquire::set_query(query);
  MSet::size()
  MSetIterator:: operator *(), get_percent(), get_document()
  Document::Document

I assumed these do:
  Database::Database(file)
  Enquire::get_mset()
  Document::get_data()


More information about the Xapian-discuss mailing list