{ } function inst() { return sfLuceneCriteria::newInstance(sfLucene::getInstance('testLucene')); } $t->diag('testing constructors'); try { $criteria = new sfLuceneCriteria(sfLucene::getInstance('testLucene')); $t->pass('__construct() takes a sfLucene instance'); } catch (Exception $e) { $t->fail('__construct() takes a sfLuce instance'); } $t->isa_ok(sfLuceneCriteria::newInstance(sfLucene::getInstance('testLucene')), 'sfLuceneCriteria', '::newInstance() returns an sfLuceneCriteria object'); $t->diag('testing ->getQuery()'); $t->isa_ok($criteria->getQuery(), 'Zend_Search_Lucene_Search_Query_Boolean', '->getQuery() returns an instance of ZSL_Search_Query_Boolean'); $t->diag('testing ->add()'); try { $criteria->add('test', true); $t->pass('->add() accepts a string'); $queries = inst()->add('foo')->add('bar')->getQuery()->getSubqueries(); $t->ok($queries[0] == Zend_Search_Lucene_Search_QueryParser::parse('foo'), '->add() correctly parses and adds text queries'); $t->ok($queries[1] == Zend_Search_Lucene_Search_QueryParser::parse('bar'), '->add() correctly parses and adds text queries and keeps them in order'); } catch (Exception $e) { $e->printStackTrace(); $t->fail('->add() accepts a string'); $t->skip('->add() correctly parses and adds text queries'); $t->skip('->add() correctly parses and adds text queries and keeps them in order'); } try { $criteria->add(new Zend_Search_Lucene_Search_Query_Boolean(), false);
/** * This method try to parse the provided $phrase into a valid solr query * The method can handle +/- and quote grouping * * @param string $field * @param string $phrase * @return sfLuceneCriteria */ public function addPhraseFieldGuess($field, $full_phrase, $type = sfLuceneCriteria::TYPE_AND) { $main_criteria = new sfLuceneCriteria(); foreach ($this->guessParts($full_phrase) as $section => $phrases) { if (count($phrases) == 0) { continue; } $inner_type = $section == 'must_contains' || $section == 'must_not_contains' ? 'AND' : 'OR'; $sign = $section == 'must_contains' ? '+' : ($section == 'must_not_contains' ? '-' : ''); $c = new sfLuceneCriteria(); foreach ($phrases as $phrase) { $c->add($sign . '(' . self::sanitize($phrase) . ')', $inner_type, true); } $main_criteria->add('(' . $c->getQuery() . ')', 'AND', true); } $this->addField($field, $main_criteria, $type, true); return $this; }