1 | <?php |
---|
2 | require('init.php'); |
---|
3 | |
---|
4 | htmlHeader(); |
---|
5 | |
---|
6 | // create a client instance and autoload the customize request plugin |
---|
7 | $client = new Solarium_Client($config); |
---|
8 | $parallel = $client->getPlugin('parallelexecution'); |
---|
9 | |
---|
10 | // Add a delay param to better show the effect, as an example Solr install with |
---|
11 | // only a dozen documents is too fast for good testing |
---|
12 | // This param only works with the correct Solr plugin, |
---|
13 | // see http://www.raspberry.nl/2012/01/04/solr-delay-component/ |
---|
14 | // If you don't have to plugin the example still works, just without the delay. |
---|
15 | $customizer = $client->getPlugin('customizerequest'); |
---|
16 | $customizer->createCustomization(array( |
---|
17 | 'key' => 'delay', |
---|
18 | 'type' => 'param', |
---|
19 | 'name' => 'delay', |
---|
20 | 'value' => '500', |
---|
21 | 'persistent' => true |
---|
22 | )); |
---|
23 | |
---|
24 | // create two queries to execute in an array. Keys are important for fetching the results later! |
---|
25 | $queryInstock = $client->createSelect()->setQuery('inStock:true'); |
---|
26 | $queryLowprice = $client->createSelect()->setQuery('price:[1 TO 300]'); |
---|
27 | |
---|
28 | // first execute the queries the normal way and time it |
---|
29 | $start = microtime(true); |
---|
30 | $client->execute($queryInstock); |
---|
31 | $client->execute($queryLowprice); |
---|
32 | echo 'Execution time for normal "serial" execution of two queries: ' . round(microtime(true)-$start, 3); |
---|
33 | |
---|
34 | |
---|
35 | echo '<hr/>'; |
---|
36 | |
---|
37 | |
---|
38 | // now execute the two queries parallel and time it |
---|
39 | $start = microtime(true); |
---|
40 | $parallel->addQuery('instock', $queryInstock); |
---|
41 | $parallel->addQuery('lowprice', $queryLowprice); |
---|
42 | $results = $parallel->execute(); |
---|
43 | echo 'Execution time for parallel execution of two queries: ' . round(microtime(true)-$start, 3); |
---|
44 | |
---|
45 | |
---|
46 | htmlFooter(); |
---|
47 | |
---|
48 | // Note: for this example on a default Solr index (with a tiny index) running on localhost the performance gain is |
---|
49 | // minimal to none, sometimes even slightly slower! |
---|
50 | // In a realworld scenario with network latency, a bigger dataset, more complex queries or multiple solr instances the |
---|
51 | // performance gain is much more. |
---|