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)