Пример #1
0
 /**
  * Return SOLR search parameters based on a user query and params.
  *
  * @param AbstractQuery $query User query
  *
  * @return ParamBag
  */
 public function build(AbstractQuery $query)
 {
     $params = parent::build($query);
     if (!$query instanceof QueryGroup) {
         $q = $params->get('q');
         foreach ($q as &$value) {
             $value = $this->getLuceneHelper()->finalizeSearchString($value);
         }
         $params->set('q', $q);
     }
     return $params;
 }
Пример #2
0
 /**
  * Test generation with mix of quoted and unquoted phrases
  *
  * @return void
  */
 public function testMixedQuotedPhrasesWithEscapedQuote()
 {
     $qb = new QueryBuilder(['a' => ['QueryFields' => ['field_a' => [['or', '~']]]]]);
     $q = new Query('708396 "708398" 708399 "foo\\"bar"', 'a');
     $response = $qb->build($q);
     $processedQ = $response->get('q');
     $this->assertEquals('(field_a:(708396 OR "708398" OR 708399 OR "foo\\"bar"))', $processedQ[0]);
 }
Пример #3
0
 /**
  * Test generation from a QueryGroup with advanced syntax
  *
  * @return void
  */
 public function testQueryGroupWithAdvancedSyntax()
 {
     $qb = new QueryBuilder(['a' => ['DismaxFields' => ['field_a'], 'QueryFields' => ['field_a' => [['and', 100]], 'field_c' => [['and', 200]]]], 'b' => ['DismaxFields' => ['field_b']]]);
     $q1 = new Query('value*', 'a');
     $q2 = new Query('value2', 'b');
     $q = new QueryGroup('OR', [$q1, $q2]);
     $response = $qb->build($q);
     $processedQ = $response->get('q');
     $this->assertEquals('((field_a:(value*)^100 OR field_c:(value*)^200) OR (_query_:"{!dismax qf=\\"field_b\\" }value2"))', $processedQ[0]);
 }