Exemple #1
0
 public function testQueryBuildOnMultipleFields()
 {
     $field_a = $this->prophesize(Field::class);
     $field_a->getType()->willReturn(Mapping::TYPE_STRING);
     $field_a->getIndexField(true)->willReturn('foo.raw');
     $field_b = $this->prophesize(Field::class);
     $field_b->getType()->willReturn(Mapping::TYPE_STRING);
     $field_b->getIndexField(true)->willReturn('bar.raw');
     $query_context = $this->prophesize(QueryContext::class);
     $query_context->getUnrestrictedFields()->willReturn([$field_a->reveal(), $field_b->reveal()]);
     $query_context->getPrivateFields()->willReturn([]);
     $node = new RawNode('baz');
     $query = $node->buildQuery($query_context->reveal());
     $expected = '{
         "multi_match": {
             "query": "baz",
             "fields": ["foo.raw", "bar.raw"],
             "analyzer": "keyword"
         }
     }';
     $this->assertEquals(json_decode($expected, true), $query);
 }
 private function visitToken($token, $value)
 {
     switch ($token) {
         case NodeTypes::TOKEN_WORD:
             return new AST\TextNode($value);
         case NodeTypes::TOKEN_QUOTED_STRING:
             return new AST\QuotedTextNode($value);
         case NodeTypes::TOKEN_RAW_STRING:
             return AST\RawNode::createFromEscaped($value);
         default:
             // Generic handling off other tokens for unresctricted text
             return new AST\TextNode($value);
     }
 }