$enq = new XapianEnquire($db); $enq->set_query(new XapianQuery(XapianQuery::OP_OR, "there", "is")); $mset = $enq->get_mset(0, 10); if ($mset->size() != 1) { print "Unexpected \$mset->size()\n"; exit(1); } $terms = join(" ", $enq->get_matching_terms($mset->get_hit(0))); if ($terms != "is there") { print "Unexpected matching terms: {$terms}\n"; exit(1); } # Feature test for MatchDecider $doc = new XapianDocument(); $doc->set_data("Two"); $doc->add_posting($stem->apply("out"), 1); $doc->add_posting($stem->apply("outside"), 1); $doc->add_posting($stem->apply("source"), 2); $doc->add_value(0, "yes"); $db->add_document($doc); class testmatchdecider extends XapianMatchDecider { function apply($doc) { return $doc->get_value(0) == "yes"; } } if (defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 50400) { print "Skipping known failure subclassing Xapian classes in PHP under PHP 5.4+\n"; } else { $query = new XapianQuery($stem->apply("out"));
print "Unexpected \$stem->get_description()\n"; exit(1); } $doc = new XapianDocument(); $doc->set_data("ab"); if ($doc->get_data() === "a") { print "get_data+set_data truncates at a zero byte\n"; exit(1); } if ($doc->get_data() !== "ab") { print "get_data+set_data doesn't transparently handle a zero byte\n"; exit(1); } $doc->set_data("is there anybody out there?"); $doc->add_term("XYzzy"); $doc->add_posting($stem->apply("is"), 1); $doc->add_posting($stem->apply("there"), 2); $doc->add_posting($stem->apply("anybody"), 3); $doc->add_posting($stem->apply("out"), 4); $doc->add_posting($stem->apply("there"), 5); // Check virtual function dispatch. if (substr($db->get_description(), 0, 17) !== "WritableDatabase(") { print "Unexpected \$db->get_description()\n"; exit(1); } $db->add_document($doc); if ($db->get_doccount() != 1) { print "Unexpected \$db->get_doccount()\n"; exit(1); } $terms = array("smoke", "test", "terms");