avoid_value = $avoid_value; XapianMatchDecider::__construct(); } function apply($doc) { return ($doc->get_value(0) !== $avoid_value); } } // Open the database for searching. try { $database = new XapianDatabase($argv[1]); // Start an enquire session. $enquire = new XapianEnquire($database); $avoid_value = $argv[2]; // Combine the rest of the command line arguments with spaces between // them, so that simple queries don't have to be quoted at the shell // level. $query_string = join(" ", array_slice($argv, 3)); $qp = new XapianQueryParser(); $stemmer = new XapianStem("english"); $qp->set_stemmer($stemmer); $qp->set_database($database); $qp->set_stemming_strategy(XapianQueryParser::STEM_SOME); $query = $qp->parse_query($query_string); print "Parsed query is: {$query->get_description()}\n"; // Find the top 10 results for the query. $enquire->set_query($query); $mdecider = new MyMatchDecider($avoid_value); $matches = $enquire->get_mset(0, 10, null, $mdecider); // Display the results. print "{$matches->get_matches_estimated()} results found:\n"; $i = $matches->begin(); while (!$i->equals($matches->end())) { $n = $i->get_rank() + 1; $data = $i->get_document()->get_data(); print "$n: {$i->get_percent()}% docid={$i->get_docid()} [$data]\n\n"; $i->next(); } } catch (Exception $e) { print $e->getMessage() . "\n"; exit(1); } ?>