foreach ($doc->termlist_begin() as $k => $term) { $s .= $term . ':' . $k->get_wdf() . ' '; } if ($s !== 'ask:1 i:1 in:2 nothing:1 return:2 tea:1 time:2 ') { print "PHP Iterator wrapping of TermIterator keys doesn't work ({$s})\n"; exit(1); } # Test GeoSpatial API $coord = new XapianLatLongCoord(); $coord = new XapianLatLongCoord(-41.288889, 174.777222); define('COORD_SLOT', 2); $metric = new XapianGreatCircleMetric(); $range = 42.0; $centre = new XapianLatLongCoords($coord); $query = new XapianQuery(new XapianLatLongDistancePostingSource(COORD_SLOT, $centre, $metric, $range)); $db = Xapian::inmemory_open(); $coords = new XapianLatLongCoords(); $coords->append(new XapianLatLongCoord(40.6048, -74.4427)); $doc = new XapianDocument(); $doc->add_term("coffee"); $doc->add_value(COORD_SLOT, $coords->serialise()); $db->add_document($doc); $centre = new XapianLatLongCoords(); $centre->append(new XapianLatLongCoord(40.6048, -74.4427)); $ps = new XapianLatLongDistancePostingSource(COORD_SLOT, $centre, $metric, $range); $q = new XapianQuery("coffee"); $q = new XapianQuery(XapianQuery::OP_AND, $q, new XapianQuery($ps)); $enq = new XapianEnquire($db); $enq->set_query($q); $mset = $enq->get_mset(0, 10); if ($mset->size() != 1) {
if ($e->getMessage() !== "QueryParserError: Syntax: <expression> AND <expression>") { print "QueryParserError Exception string not as expected, got: '{$e->getMessage}()'\n"; exit(1); } } # Regression test for bug#193, fixed in 1.0.3. $vrp = new XapianNumberValueRangeProcessor(0, '$', true); $a = '$10'; $b = '20'; $vrp->apply($a, $b); if (Xapian::sortable_unserialise($a) != 10) { print Xapian::sortable_unserialise($a) . " != 10\n"; exit(1); } if (Xapian::sortable_unserialise($b) != 20) { print Xapian::sortable_unserialise($b) . " != 20\n"; exit(1); } $stem = new XapianStem("english"); if ($stem->get_description() != "Xapian::Stem(english)") { 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";
} } } //MBSTRING if (!function_exists('mb_substr') || !function_exists('mb_convert_encoding')) { $content .= '<li class="atm-pic-cancel">Error, Multibyte String (mbsring) extension not installed (only needed if UTF-8 encoding is used)</li>'; } else { $content .= '<li class="atm-pic-ok">Multibyte String (mbsring) extension OK</li>'; } //XAPIAN if (class_exists('CMS_module_ase')) { $xapianVersion = ''; if (function_exists('xapian_version_string')) { $xapianVersion = xapian_version_string(); } elseif (class_exists('Xapian')) { $xapianVersion = Xapian::version_string(); } else { $content .= '<li class="atm-pic-cancel">Error, Xapian extension not installed (only needed if ASE module is installed)</li>'; } if ($xapianVersion) { if (version_compare($xapianVersion, '1.0.2') === -1) { $content .= '<li class="atm-pic-cancel">Error, Xapian version (' . $xapianVersion . ') not match (1.0.2 minimum)</li>'; } else { $content .= '<li class="atm-pic-ok">Xapian extension OK (' . $xapianVersion . ')</li>'; } } } //Files writing $randomFile = PATH_REALROOT_FS . '/test_' . md5(mt_rand() . microtime()) . '.tmp'; if (!is_writable(PATH_REALROOT_FS)) { $content .= '<li class="atm-pic-cancel">Error, No permissions to write files on website root directory (' . PATH_REALROOT_FS . ')</li>';
$text = trim($text); if (!$text) { continue; } $noise = 0; if ($text != 'I' && !preg_match('#[a-z!.]#', $text) && $color == 'white') { $noise = 1; } $id = "{$series}-{$epid}-{$rowcount}"; $doc = new XapianDocument(); $indexer->set_document($doc); $doc->set_data($text); $doc->add_term("A{$align}"); $doc->add_term("B{$begin}"); $doc->add_term("C{$color}"); $doc->add_term("E{$epid}"); $doc->add_term("I{$rowcount}"); $doc->add_term("N{$noise}"); $doc->add_term("Q{$id}"); $doc->add_term("S{$series}"); $doc->add_value(0, Xapian::sortable_serialise($beginN)); $doc->add_value(1, sprintf("%d%02d", $series, $epid)); $indexer->index_text($text); $db->add_document($doc); $rowcount++; } $lasttextarr = $safetextarr; } } } $db = null;
public function alert($query, $query_term, $other_term = array(), $sort_id = 0) { try { $this->document = new XapianDocument(); $this->indexer->set_document($this->document); foreach ($query_term as $key => $value) { //$this->indexer->index_text($value, 1, strtoupper($key)); $this->indexer->index_text($value); #$this->indexer->increase_termpos(); } if (!empty($other_term)) { foreach ($other_term as $key => $value) { $this->indexer->index_text($value); #$this->indexer->increase_termpos(); } } $this->document->set_data(json_encode($query)); if (!empty($sort_id)) { $this->document->add_value(0, Xapian::sortable_serialise(intval($sort_id))); } $id_term = $this->_getIdTerm($query[$this->primarykey]); $this->document->add_term($id_term); $this->database->replace_document($id_term, $this->document); $this->database->commit(); } catch (Exception $e) { print $e->getMessage() . "\n"; } }