0
|
1 <?php
|
|
2
|
|
3 /**
|
|
4 * The interface for all 'query' objects.
|
|
5 */
|
|
6 interface DrupalSolrQueryInterface {
|
|
7
|
|
8 /**
|
|
9 * Get query name.
|
|
10 */
|
|
11 function getName();
|
|
12
|
|
13 /**
|
|
14 * Get query searcher name (for facetapi, views, pages, etc).
|
|
15 */
|
|
16 function getSearcher();
|
|
17
|
|
18 /**
|
|
19 * Get context values.
|
|
20 */
|
|
21 function getContext();
|
|
22
|
|
23 /**
|
|
24 * Set context value.
|
|
25 */
|
|
26 function addContext(array $context);
|
|
27
|
|
28 /**
|
|
29 * Returns all filters matching $name, if set; otherwise, returns all filters.
|
|
30 *
|
|
31 * @param string $name
|
|
32 * The facet field name to match. If NULL, all filters will be returned.
|
|
33 *
|
|
34 * @return array
|
|
35 * All matching filters.
|
|
36 */
|
|
37 function getFilters($name = NULL);
|
|
38
|
|
39 /**
|
|
40 * Tests whether a filter is already present in the query.
|
|
41 *
|
|
42 * @param string $name
|
|
43 * The facet field name to check.
|
|
44 * @param string $value
|
|
45 * The facet value to check.
|
|
46 * @param boolean $exclude
|
|
47 * Optional, defaults to FALSE, must match the filter.
|
|
48 *
|
|
49 * @return boolean
|
|
50 * TRUE or FALSE.
|
|
51 */
|
|
52 function hasFilter($name, $value, $exclude = FALSE);
|
|
53
|
|
54 /**
|
|
55 * Adds a filter to the query.
|
|
56 *
|
|
57 * @param string $name
|
|
58 * The facet field name.
|
|
59 * @param string $value
|
|
60 * The facet field value.
|
|
61 * @param boolean $exclude
|
|
62 * Set to TRUE to filter out documents matching $value.
|
|
63 * @param string $local
|
|
64 * Solr LocalParams.
|
|
65 *
|
|
66 * @return DrupalSolrQueryInterface
|
|
67 * The called object.
|
|
68 */
|
|
69 function addFilter($name, $value, $exclude = FALSE, $local = '');
|
|
70
|
|
71 /**
|
|
72 * Removes a filter from the query.
|
|
73 *
|
|
74 * @param string $name
|
|
75 * The name of the facet field to remove.
|
|
76 * @param string $value
|
|
77 * The value of the facet field to remove. If NULL, all filters matching
|
|
78 * $name are removed.
|
|
79 * @param boolean $exclude
|
|
80 * If $value is not NULL, only filters matching both $value and $exclude are
|
|
81 * removed. Ignored if $value is NULL.
|
|
82 *
|
|
83 * @return DrupalSolrQueryInterface
|
|
84 * The called object.
|
|
85 */
|
|
86 function removeFilter($name, $value = NULL, $exclude = FALSE);
|
|
87
|
|
88 /**
|
|
89 * Returns all subqueries to the query.
|
|
90 *
|
|
91 * @return array
|
|
92 * All subqueries to the query.
|
|
93 */
|
|
94 function getFilterSubQueries();
|
|
95
|
|
96 /**
|
|
97 * Adds a subquery to the query.
|
|
98 *
|
|
99 * @param SolrFilterSubQuery $query
|
|
100 * The query to add to the orginal query - may have keywords or filters.
|
|
101 * @param string $fq_operator
|
|
102 * The operator to use within the filter part of the subquery
|
|
103 * @param string $q_operator
|
|
104 * The operator to use in joining the subquery to the main keywords. Note:
|
|
105 * this is unlikely to work with the Dismax handler when the main query is
|
|
106 * only keywords.
|
|
107 *
|
|
108 * @return DrupalSolrQueryInterface
|
|
109 * The called object.
|
|
110 */
|
|
111 function addFilterSubQuery(SolrFilterSubQuery $query);
|
|
112
|
|
113 /**
|
|
114 * Removes a specific subquery.
|
|
115 *
|
|
116 * @param DrupalSolrQueryInterface $query
|
|
117 * The query to remove.
|
|
118 *
|
|
119 * @return DrupalSolrQueryInterface
|
|
120 * The called object.
|
|
121 */
|
|
122 function removeFilterSubQuery(SolrFilterSubQuery $query);
|
|
123
|
|
124 /**
|
|
125 * Removes all subqueries.
|
|
126 *
|
|
127 * @return DrupalSolrQueryInterface
|
|
128 * The called object.
|
|
129 */
|
|
130 function removeFilterSubQueries();
|
|
131
|
|
132 /**
|
|
133 * Transforms a single filter in a form suitable for use in a Solr query.
|
|
134 *
|
|
135 * @param array $filter
|
|
136 * A filter as an array with the keys '#name', for the facet field name,
|
|
137 * '#value', for the facet field value, '#local', for Solr LocalParams, and
|
|
138 '#exclude' set to TRUE if it is an exclusion filter.
|
|
139 *
|
|
140 * @return string
|
|
141 * A Solr fq parameter value.
|
|
142 */
|
|
143 function makeFilterQuery(array $filter);
|
|
144
|
|
145 /**
|
|
146 * Gets the value of a parameter.
|
|
147 *
|
|
148 * @param string $name
|
|
149 * The parameter name.
|
|
150 *
|
|
151 * @return
|
|
152 * The value of the parameter.
|
|
153 */
|
|
154 function getParam($name);
|
|
155
|
|
156 /**
|
|
157 * Gets all parameters in normalized form.
|
|
158 *
|
|
159 * @return array
|
|
160 * All parameters as key-value pairs.
|
|
161 */
|
|
162 function getParams();
|
|
163
|
|
164 /**
|
|
165 * Gets parameters in a form suitable for use in a Solr query.
|
|
166 *
|
|
167 * @return array
|
|
168 * All parameters as key-value pairs, where values have been transformed
|
|
169 * into Solr parameter values.
|
|
170 */
|
|
171 function getSolrParams();
|
|
172
|
|
173 /**
|
|
174 * Adds a param to be sent when running the Solr search.
|
|
175 *
|
|
176 * If the param is single-valued, this will replace rather than add the value.
|
|
177 *
|
|
178 * @param string $name
|
|
179 * A Solr param name, e.g. 'q' or 'fl'.
|
|
180 * @param $value
|
|
181 * A Solr param value: an array of values, or a string for a single value.
|
|
182 *
|
|
183 * @return DrupalSolrQueryInterface
|
|
184 * The called object.
|
|
185 */
|
|
186 function addParam($name, $value);
|
|
187
|
|
188 /**
|
|
189 * Adds multiple params to be sent when running the Solr search.
|
|
190 *
|
|
191 * If the param is single-valued, this will replace rather than add the value.
|
|
192 *
|
|
193 * @param $params
|
|
194 * An array where the keys are param names, and the values may be strings or
|
|
195 * arrays of strings.
|
|
196 *
|
|
197 * @return DrupalSolrQueryInterface
|
|
198 * The called object.
|
|
199 */
|
|
200 function addParams(array $params);
|
|
201
|
|
202 /**
|
|
203 * Removes all values for one Solr param.
|
|
204 *
|
|
205 * @param string $name
|
|
206 * A Solr param name, e.g. 'q' or 'fl'.
|
|
207 *
|
|
208 * @return DrupalSolrQueryInterface
|
|
209 * The called object.
|
|
210 */
|
|
211 function removeParam($name);
|
|
212
|
|
213 /**
|
|
214 * Replaces a param to be sent when running the Solr search.
|
|
215 *
|
|
216 * Basically a shortcut for removeParam() plus addParam().
|
|
217 *
|
|
218 * @param string $name
|
|
219 * A Solr param name, e.g. 'q' or 'fl'.
|
|
220 * @param $value
|
|
221 * A Solr param value: an array of values, or a string for a single value.
|
|
222 *
|
|
223 * @return DrupalSolrQueryInterface
|
|
224 * The called object.
|
|
225 */
|
|
226 function replaceParam($name, $value);
|
|
227
|
|
228 /**
|
|
229 * Handles aliases for field to make nicer URLs.
|
|
230 *
|
|
231 * @param $field_map
|
|
232 * An array keyed with real Solr index field names with the alias as value.
|
|
233 *
|
|
234 * @return DrupalSolrQueryInterface
|
|
235 * The called object.
|
|
236 */
|
|
237 function addFieldAliases($field_map);
|
|
238
|
|
239 function getFieldAliases();
|
|
240
|
|
241 function clearFieldAliases();
|
|
242
|
|
243 function getAvailableSorts();
|
|
244
|
|
245 /**
|
|
246 * Adds an available sort.
|
|
247 *
|
|
248 * @param string $name
|
|
249 * The name of the field in the Solr index to sort on.
|
|
250 * @param array $sort
|
|
251 * An array with the keys 'title', for the human name of the sort, and
|
|
252 * 'default', for the default sort direction ('asc' or 'desc').
|
|
253 *
|
|
254 * @return DrupalSolrQueryInterface
|
|
255 * The called object.
|
|
256 */
|
|
257 function setAvailableSort($name, $sort);
|
|
258
|
|
259 /**
|
|
260 * Removes an available sort.
|
|
261 *
|
|
262 * @param string $name
|
|
263 * The name of the field in the Solr index to sort on.
|
|
264 *
|
|
265 * @return DrupalSolrQueryInterface
|
|
266 * The called object.
|
|
267 */
|
|
268 function removeAvailableSort($name);
|
|
269
|
|
270 /**
|
|
271 * Gets the current sort.
|
|
272 *
|
|
273 * @return array
|
|
274 * The current sort as an array with the keys '#name', for the name of
|
|
275 * the field, and '#direction', for the sort direction ('asc' or 'desc').
|
|
276 */
|
|
277 function getSolrsort();
|
|
278
|
|
279 /**
|
|
280 * Sets the sort.
|
|
281 *
|
|
282 * @param string $field
|
|
283 * The name of the field in the Solr index to sort on.
|
|
284 * @param string $direction
|
|
285 * 'asc' or 'desc'
|
|
286 *
|
|
287 * @return DrupalSolrQueryInterface
|
|
288 * The called object.
|
|
289 */
|
|
290 function setSolrsort($name, $direction);
|
|
291
|
|
292 /**
|
|
293 * Returns an array representing the URL query string for the current sort.
|
|
294 *
|
|
295 * @return array
|
|
296 * The URL query string for the current sort.
|
|
297 */
|
|
298 function getSolrsortUrlQuery();
|
|
299
|
|
300 /**
|
|
301 * Returns the search path (including the search keywords).
|
|
302 *
|
|
303 * @param string $new_keywords
|
|
304 * Optional. When set, this string overrides the query's current keywords.
|
|
305 *
|
|
306 * @return string
|
|
307 * The search path.
|
|
308 */
|
|
309 function getPath($new_keywords = NULL);
|
|
310
|
|
311 /**
|
|
312 * Sends the search request to Solr, unless $query->abort_search is TRUE.
|
|
313 *
|
|
314 * @param string $keys
|
|
315 * The search keys.
|
|
316 *
|
|
317 * @return
|
|
318 * A stdClass response object.
|
|
319 */
|
|
320 function search($keys = NULL);
|
|
321
|
|
322 /**
|
|
323 * Calls a method, without arguments, on the Solr object with which the query
|
|
324 * object was initialized.
|
|
325 *
|
|
326 * @param string $method
|
|
327 * The method to call on the Solr object.
|
|
328 *
|
|
329 * @return
|
|
330 * Any method return.
|
|
331 */
|
|
332 function solr($method);
|
|
333 }
|
|
334
|
|
335 /**
|
|
336 * The interface for all 'Service' objects.
|
|
337 */
|
|
338 interface DrupalApacheSolrServiceInterface {
|
|
339 /**
|
|
340 * Call the /admin/ping servlet, to test the connection to the server.
|
|
341 *
|
|
342 * @param $timeout
|
|
343 * maximum time to wait for ping in seconds, -1 for unlimited (default 2).
|
|
344 * @return
|
|
345 * (float) seconds taken to ping the server, FALSE if timeout occurs.
|
|
346 */
|
|
347 function ping($timeout = 2);
|
|
348
|
|
349 /**
|
|
350 * Get information about the Solr Core.
|
|
351 *
|
|
352 * @return
|
|
353 * (string) system info encoded in json
|
|
354 */
|
|
355 function getSystemInfo();
|
|
356
|
|
357 /**
|
|
358 * Get just the field meta-data about the index.
|
|
359 */
|
|
360 function getFields($num_terms = 0);
|
|
361
|
|
362 /**
|
|
363 * Get meta-data about the index.
|
|
364 */
|
|
365 function getLuke($num_terms = 0);
|
|
366
|
|
367 /**
|
|
368 * Get information about the Solr Core.
|
|
369 *
|
|
370 * Returns a Simple XMl document
|
|
371 */
|
|
372 function getStats();
|
|
373
|
|
374 /**
|
|
375 * Get summary information about the Solr Core.
|
|
376 */
|
|
377 function getStatsSummary();
|
|
378
|
|
379 /**
|
|
380 * Clear cached Solr data.
|
|
381 */
|
|
382 function clearCache();
|
|
383
|
|
384 /**
|
|
385 * Constructor
|
|
386 *
|
|
387 * @param $url
|
|
388 * The URL to the Solr server, possibly including a core name. E.g. http://localhost:8983/solr/
|
|
389 * or https://search.example.com/solr/core99/
|
|
390 * @param $env_id
|
|
391 * The machine name of a corresponding saved configuration used for loading
|
|
392 * data like which facets are enabled.
|
|
393 */
|
|
394 function __construct($url, $env_id = NULL);
|
|
395
|
|
396 function getId();
|
|
397
|
|
398 /**
|
|
399 * Make a request to a servlet (a path) that's not a standard path.
|
|
400 *
|
|
401 * @param string $servlet
|
|
402 * A path to be added to the base Solr path. e.g. 'extract/tika'
|
|
403 *
|
|
404 * @param array $params
|
|
405 * Any request parameters when constructing the URL.
|
|
406 *
|
|
407 * @param array $options
|
|
408 * @see drupal_http_request() $options.
|
|
409 *
|
|
410 * @return
|
|
411 * response object
|
|
412 *
|
|
413 * @thows Exception
|
|
414 */
|
|
415 function makeServletRequest($servlet, $params = array(), $options = array());
|
|
416
|
|
417 /**
|
|
418 * Get the Solr url
|
|
419 *
|
|
420 * @return string
|
|
421 */
|
|
422 function getUrl();
|
|
423
|
|
424 /**
|
|
425 * Set the Solr url.
|
|
426 *
|
|
427 * @param $url
|
|
428 *
|
|
429 * @return $this
|
|
430 */
|
|
431 function setUrl($url);
|
|
432
|
|
433 /**
|
|
434 * Raw update Method. Takes a raw post body and sends it to the update service. Post body
|
|
435 * should be a complete and well formed xml document.
|
|
436 *
|
|
437 * @param string $rawPost
|
|
438 * @param float $timeout Maximum expected duration (in seconds)
|
|
439 *
|
|
440 * @return response object
|
|
441 *
|
|
442 * @throws Exception If an error occurs during the service call
|
|
443 */
|
|
444 function update($rawPost, $timeout = FALSE);
|
|
445
|
|
446 /**
|
|
447 * Add an array of Solr Documents to the index all at once
|
|
448 *
|
|
449 * @param array $documents Should be an array of ApacheSolrDocument instances
|
|
450 * @param boolean $allowDups
|
|
451 * @param boolean $overwritePending
|
|
452 * @param boolean $overwriteCommitted
|
|
453 *
|
|
454 * @return response objecte
|
|
455 *
|
|
456 * @throws Exception If an error occurs during the service call
|
|
457 */
|
|
458 function addDocuments($documents, $overwrite = NULL, $commitWithin = NULL);
|
|
459
|
|
460 /**
|
|
461 * Send a commit command. Will be synchronous unless both wait parameters are set to false.
|
|
462 *
|
|
463 * @param boolean $optimize Defaults to true
|
|
464 * @param boolean $waitFlush Defaults to true
|
|
465 * @param boolean $waitSearcher Defaults to true
|
|
466 * @param float $timeout Maximum expected duration (in seconds) of the commit operation on the server (otherwise, will throw a communication exception). Defaults to 1 hour
|
|
467 *
|
|
468 * @return response object
|
|
469 *
|
|
470 * @throws Exception If an error occurs during the service call
|
|
471 */
|
|
472 function commit($optimize = TRUE, $waitFlush = TRUE, $waitSearcher = TRUE, $timeout = 3600);
|
|
473
|
|
474 /**
|
|
475 * Create a delete document based on document ID
|
|
476 *
|
|
477 * @param string $id Expected to be utf-8 encoded
|
|
478 * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
|
|
479 *
|
|
480 * @return response object
|
|
481 *
|
|
482 * @throws Exception If an error occurs during the service call
|
|
483 */
|
|
484 function deleteById($id, $timeout = 3600);
|
|
485
|
|
486 /**
|
|
487 * Create and post a delete document based on multiple document IDs.
|
|
488 *
|
|
489 * @param array $ids Expected to be utf-8 encoded strings
|
|
490 * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
|
|
491 *
|
|
492 * @return response object
|
|
493 *
|
|
494 * @throws Exception If an error occurs during the service call
|
|
495 */
|
|
496 function deleteByMultipleIds($ids, $timeout = 3600);
|
|
497
|
|
498 /**
|
|
499 * Create a delete document based on a query and submit it
|
|
500 *
|
|
501 * @param string $rawQuery Expected to be utf-8 encoded
|
|
502 * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
|
|
503 * @return stdClass response object
|
|
504 *
|
|
505 * @throws Exception If an error occurs during the service call
|
|
506 */
|
|
507 function deleteByQuery($rawQuery, $timeout = 3600);
|
|
508
|
|
509 /**
|
|
510 * Send an optimize command. Will be synchronous unless both wait parameters are set
|
|
511 * to false.
|
|
512 *
|
|
513 * @param boolean $waitFlush
|
|
514 * @param boolean $waitSearcher
|
|
515 * @param float $timeout Maximum expected duration of the commit operation on the server (otherwise, will throw a communication exception)
|
|
516 *
|
|
517 * @return response object
|
|
518 *
|
|
519 * @throws Exception If an error occurs during the service call
|
|
520 */
|
|
521 function optimize($waitFlush = TRUE, $waitSearcher = TRUE, $timeout = 3600);
|
|
522
|
|
523 /**
|
|
524 * Simple Search interface
|
|
525 *
|
|
526 * @param string $query The raw query string
|
|
527 * @param array $params key / value pairs for other query parameters (see Solr documentation), use arrays for parameter keys used more than once (e.g. facet.field)
|
|
528 *
|
|
529 * @return response object
|
|
530 *
|
|
531 * @throws Exception If an error occurs during the service call
|
|
532 */
|
|
533 function search($query = '', array $params = array(), $method = 'GET');
|
|
534
|
|
535 /**
|
|
536 * Get the current solr version. This could be 1, 3 or 4
|
|
537 *
|
|
538 * @return int
|
|
539 * 1, 3 or 4. Does not give a more details version, for that you need
|
|
540 * to get the system info.
|
|
541 */
|
|
542 function getSolrVersion();
|
|
543
|
|
544 }
|