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 | ?>
|
---|