1--TEST--
2Solr Bug #72740 - addPhraseField return wrong query
3--SKIPIF--
4<?php require_once 'skip.if.server_not_configured.inc'; ?>
5--FILE--
6<?php
7
8require_once "bootstrap.inc";
9
10$options = array (
11		'hostname' => SOLR_SERVER_HOSTNAME,
12		'login' => SOLR_SERVER_USERNAME,
13		'password' => SOLR_SERVER_PASSWORD,
14		'port' => SOLR_SERVER_PORT,
15		'path' => SOLR_SERVER_PATH
16);
17
18$client = new SolrClient( $options );
19
20$dismaxQuery = new SolrDisMaxQuery( '*:*' );
21$dismaxQuery->addPhraseField( "phraseField1", 10, 5 );
22$dismaxQuery->addPhraseField( "phraseField2", 5, 1 );
23$dismaxQuery->addSortField('score', SolrQuery::ORDER_DESC);
24$dismaxQuery->addSortField('manufacturedate_dt', SolrQuery::ORDER_DESC);
25
26// Scenario 1: DisMax Query Parser - Adds Phrase Fields with both boost and slop.
27// Expect:
28// - pf parameter should list each phrase field with ~ and ^ prefix for slop and boost value respectively.
29$queryResponse = $client->query( $dismaxQuery );
30
31print_r($queryResponse->getResponse()->responseHeader->params);
32
33// Scenario 2: Same as Scenario 1, now including explicit query fields too.
34// Expect:
35// - pf parameter should list each phrase field with ~ and ^ prefix for slop and boost value respectively.
36// - qf parameter should list each query field with a trailing ^ (no boost here).
37$dismaxQuery->addQueryField('score');
38$dismaxQuery->addQueryField('manufacturedate_dt');
39
40$queryResponse = $client->query( $dismaxQuery );
41
42print_r($queryResponse->getResponse()->responseHeader->params);
43
44// Scenario 3: Same as Scenario 2, now including explicit boost value for the query fields.
45// Expect:
46// - pf parameter should list each phrase field with ~ and ^ prefix for slop and boost value respectively.
47// - qf parameter should list each query field with a ^ prefix for boost value.
48$dismaxQuery->removeQueryField('score');
49$dismaxQuery->removeQueryField('manufacturedate_dt');
50$dismaxQuery->addQueryField('score', 3);
51$dismaxQuery->addQueryField('manufacturedate_dt', 7);
52
53$queryResponse = $client->query( $dismaxQuery );
54
55print_r($queryResponse->getResponse()->responseHeader->params);
56?>
57--EXPECTF--
58SolrObject Object
59(
60    [q] => *:*
61    [defType] => edismax
62    [indent] => on
63    [pf] => phraseField1~5^10 phraseField2~1^5
64    [sort] => score desc,manufacturedate_dt desc
65    [version] => 2.2
66    [wt] => xml
67)
68SolrObject Object
69(
70    [q] => *:*
71    [defType] => edismax
72    [indent] => on
73    [qf] => score^ manufacturedate_dt^
74    [pf] => phraseField1~5^10 phraseField2~1^5
75    [sort] => score desc,manufacturedate_dt desc
76    [version] => 2.2
77    [wt] => xml
78)
79SolrObject Object
80(
81    [q] => *:*
82    [defType] => edismax
83    [indent] => on
84    [qf] => score^3 manufacturedate_dt^7
85    [pf] => phraseField1~5^10 phraseField2~1^5
86    [sort] => score desc,manufacturedate_dt desc
87    [version] => 2.2
88    [wt] => xml
89)