public static function factory($queryString)
{
$tokenizer = new GeneralTokenizer();
$tokens = $tokenizer->tokenize($queryString);
if (in_array($queryString[0], ['"', "'"]) && in_array($queryString[strlen($queryString) - 1], ['"', "'"])) {
return new QuotedQuery($queryString);
} elseif (count($tokens) === 1) {
return new SingleTermQuery($queryString);
} else {
return new MultiTermQuery($queryString);
}
}
/** * Accepts a string a query and returns the set of documents relevant * to the query * @param string $queryStr * @return array */ public function query($queryStr) { $queryObj = QueryAbstractFactory::factory($queryStr); if ($queryObj instanceof SingleTermQuery && isset($this->index[$queryObj->getQuery()])) { return $this->index[$queryObj->getQuery()][self::POSTINGS]; } else { if ($queryObj instanceof MultiTermQuery) { return $this->getMultiTermResults($queryObj->getQuery()); } } //no results available return array(); }