| 1 | <?php
|
|---|
| 2 | if (php_sapi_name() != "cli") {
|
|---|
| 3 | print "This example script is written to run under the command line ('cli') version of\n";
|
|---|
| 4 | print "the PHP interpreter, but you're using the '".php_sapi_name()."' version\n";
|
|---|
| 5 | exit(1);
|
|---|
| 6 | }
|
|---|
| 7 |
|
|---|
| 8 | include "xapian.php";
|
|---|
| 9 |
|
|---|
| 10 | if ($argc != 2) {
|
|---|
| 11 | print "Usage: {$argv[0]} PATH_TO_DATABASE\n";
|
|---|
| 12 | exit(1);
|
|---|
| 13 | }
|
|---|
| 14 |
|
|---|
| 15 | try {
|
|---|
| 16 | // Open the database for update, creating a new database if necessary.
|
|---|
| 17 | $database = new XapianWritableDatabase($argv[1], Xapian::DB_CREATE_OR_OVERWRITE);
|
|---|
| 18 |
|
|---|
| 19 | // add a document with a term and a timestamp value
|
|---|
| 20 | $doc = new XapianDocument();
|
|---|
| 21 | $doc->add_term("foo");
|
|---|
| 22 | $doc->add_value(1, Xapian::sortable_serialise(1000000000));
|
|---|
| 23 | $database->add_document($doc);
|
|---|
| 24 |
|
|---|
| 25 | // add another: same term, different timestamp value
|
|---|
| 26 | $doc = new XapianDocument();
|
|---|
| 27 | $doc->add_term("foo");
|
|---|
| 28 | $doc->add_value(1, Xapian::sortable_serialise(2000000000));
|
|---|
| 29 | $database->add_document($doc);
|
|---|
| 30 |
|
|---|
| 31 | // Set the database handle to Null to ensure that it gets closed
|
|---|
| 32 | // down cleanly or unflushed changes may be lost.
|
|---|
| 33 | $database = Null;
|
|---|
| 34 |
|
|---|
| 35 | // open database for reading
|
|---|
| 36 | $database = new XapianDatabase($argv[1]);
|
|---|
| 37 | $enquire = new XapianEnquire($database);
|
|---|
| 38 |
|
|---|
| 39 | // example 1 using a query processor
|
|---|
| 40 | $qp = new XapianQueryParser();
|
|---|
| 41 | $qp->set_database($database);
|
|---|
| 42 | $datenumproc = new XapianNumberValueRangeProcessor(1);
|
|---|
| 43 | $qp->add_valuerangeprocessor($datenumproc);
|
|---|
| 44 |
|
|---|
| 45 | // without range: get both docs
|
|---|
| 46 | $query = $qp->parse_query("foo");
|
|---|
| 47 | $enquire->set_query($query);
|
|---|
| 48 | print $enquire->get_mset(0, 10)->size();
|
|---|
| 49 | print "\n";
|
|---|
| 50 |
|
|---|
| 51 | // with range: get first doc
|
|---|
| 52 | $query = $qp->parse_query("foo 1000000000..1500000000");
|
|---|
| 53 | $enquire->set_query($query);
|
|---|
| 54 | print $enquire->get_mset(0, 10)->size();
|
|---|
| 55 | print "\n";
|
|---|
| 56 |
|
|---|
| 57 | // example 2 - direct query construction (get first doc)
|
|---|
| 58 | $query = new XapianQuery(XapianQuery::OP_VALUE_RANGE,
|
|---|
| 59 | 1,
|
|---|
| 60 | Xapian::sortable_serialise(1000000000),
|
|---|
| 61 | Xapian::sortable_serialise(1500000000));
|
|---|
| 62 | $enquire->set_query($query);
|
|---|
| 63 | print $enquire->get_mset(0, 10)->size();
|
|---|
| 64 | print "\n";
|
|---|
| 65 |
|
|---|
| 66 | } catch (Exception $e) {
|
|---|
| 67 | print $e->getMessage() . "\n";
|
|---|
| 68 | exit(1);
|
|---|
| 69 | }
|
|---|
| 70 | ?>
|
|---|