[Xapian-discuss] In-memory databases vs PHP Bindings

Menard, Daniel Daniel.Menard at ehesp.fr
Thu Oct 21 15:47:30 BST 2010


Hello,

The documentation describes the Xapian C++ API. In general, it applies to PHP but there is additional documentation for the PHP bindings here :
http://xapian.org/docs/bindings/php/

It seems that this document is not (yet) linked from the xapian /docs/ page but it is included with the bindings download.

You will find in this documentation the answers to your questions:
- Use Xapian::inmemory_open() to open an inmemory database (section "Database Factory Functions") :
  $xdb_doc = Xapian::inmemory_open();

- get_term()is available for TermIterator and ESetIterator.
  (section "Iterator dereferencing")

Hope it helps,

Daniel

> -----Message d'origine-----
> De : xapian-discuss-bounces at lists.xapian.org [mailto:xapian-discuss-
> bounces at lists.xapian.org] De la part de Andrew Betts
> Envoyé : jeudi 21 octobre 2010 16:33
> À : xapian-discuss at lists.xapian.org
> Objet : [Xapian-discuss] In-memory databases vs PHP Bindings
> 
> I can't quite connect the dots on this, perhaps someone can help.  I'm
> simply trying to create an in-memory database comprising a single document,
> so that I can run a load of queries against it and see if any of them match
> the new document (this is to enable users to have 'subscriptions' to saved
> searches and be alerted every time a new item is published that matches
> their search).
> 
> However, I can't work out how to create an in-memory database via the PHP
> bindings.  Here's what I've got so far, using a disk-based index with an
> automatic backend (third line from the end is the critical one):
> 
> // Find the document in the posts index
> $xenq = new XapianEnquire($xdb_posts);
> $xenq->set_query(new XapianQuery("UIDpost".$postid));
> $xdoc = $xenq->get_mset(0, 1)->begin()->get_document();
> 
> // Create a database that just contains the one document
> // TODO:AB:20101020: Work out how to build an in-memory Xapian database via
> PHP bindings
> $xdb_doc = new XapianWritableDatabase(PROJROOT.'/tmp/xapian/doc'.$postid,
> Xapian::DB_CREATE_OR_OVERWRITE);
> $xdb_doc->add_document($xdoc);
> $xdb_doc->commit();
> 
> 
> Also, FYI, the documentation here seems incomplete:
> http://xapian.org/docs/apidoc/html/classXapian_1_1TermIterator.html
> 
> I had to inspect the bindings to find the rather useful get_term() method of
> the TermIterator class!  It does mention the use of the * operator to return
> the current term but I can't see how I'd invoke that in PHP.  If the
> get_term method applies in all environments, it ought to be documented I'd
> have thought.
> 
> Andrew
> 
> 
> _______________________________________________
> Xapian-discuss mailing list
> Xapian-discuss at lists.xapian.org
> http://lists.xapian.org/mailman/listinfo/xapian-discuss
> 
> Email secured by Check Point



More information about the Xapian-discuss mailing list