\n"; exit; } $database = new XapianDatabase($_SERVER['argv'][1]); if (!$database) { print "Couldn't open database '{$_SERVER['argv'][1]}'\n"; exit; } $enquire = new XapianEnquire($database); $stemmer = new XapianStem("english"); $terms = array(); $rset = new XapianRSet(); $rels = false; foreach (array_slice($_SERVER['argv'], 2) as $term) { if ($term === "--") { $rels = true; continue; } if ($rels) { $rset->add_document(intval($term)); } else { array_push($terms, Stem_stem_word($stemmer, strtolower($term))); } } $query = new XapianQuery(Query_OP_OR, $terms); print "Performing query `" . $query->get_description() . "'\n"; $enquire->set_query($query); $matches = $enquire->get_mset(0, 10); # Put the top 5 (at most) docs into the rset if rset is empty. if ($rset->is_empty()) { $count = 5; $m = $matches->begin(); while (!$m->equals($matches->end())) { $rset->add_document($m->get_docid()); if (--$count == 0) break; $m->next(); } } # Get the suggested expand terms. $eset = $enquire->get_eset(10, $rset); print $eset->size() . " suggested additional terms\n"; $e = $eset->begin(); while (!$e->equals($eset->end())) { print "Term `" . $e->get_termname() . "'\t(weight " . $e->get_weight() . ")\n"; $e->next(); } print $matches->get_matches_estimated() . " results found\n"; $mseti = $matches->begin(); while (!$mseti->equals($matches->end())) { print "ID " . $mseti->get_docid() . " " . $mseti->get_percent() . "% [" . $mseti->get_document()->get_data() . "]\n"; $mseti->next(); } ?>