Example #1
0
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) {
Example #2
0
    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";
Example #3
0
        }
    }
}
//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>';
Example #4
0
                $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;
Example #5
0
 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";
     }
 }