/**
  * @param string     $query
  * @param array|null $args
  *
  * @return mixed
  *
  * @throws AlgoliaException
  */
 public function search($query, $args = null)
 {
     if ($args === null) {
         $args = array();
     }
     $args['query'] = $query;
     return $this->client->request($this->context, 'POST', '/1/places/query', array(), array('params' => $this->client->buildQuery($args)), $this->context->readHostsArray, $this->context->connectTimeout, $this->context->searchTimeout);
 }
Example #2
0
 /**
  * Search inside the index.
  *
  * @param string $query the full text query
  * @param mixed  $args  (optional) if set, contains an associative array with query parameters:
  *                      - page: (integer) Pagination parameter used to select the page to retrieve.
  *                      Page is zero-based and defaults to 0. Thus, to retrieve the 10th page you need to set page=9
  *                      - hitsPerPage: (integer) Pagination parameter used to select the number of hits per page.
  *                      Defaults to 20.
  *                      - attributesToRetrieve: a string that contains the list of object attributes you want to
  *                      retrieve (let you minimize the answer size). Attributes are separated with a comma (for
  *                      example "name,address"). You can also use a string array encoding (for example
  *                      ["name","address"]). By default, all attributes are retrieved. You can also use '*' to
  *                      retrieve all values when an attributesToRetrieve setting is specified for your index.
  *                      - attributesToHighlight: a string that contains the list of attributes you want to highlight
  *                      according to the query. Attributes are separated by a comma. You can also use a string array
  *                      encoding (for example ["name","address"]). If an attribute has no match for the query, the raw
  *                      value is returned. By default all indexed text attributes are highlighted. You can use `*` if
  *                      you want to highlight all textual attributes. Numerical attributes are not highlighted. A
  *                      matchLevel is returned for each highlighted attribute and can contain:
  *                      - full: if all the query terms were found in the attribute,
  *                      - partial: if only some of the query terms were found,
  *                      - none: if none of the query terms were found.
  *                      - attributesToSnippet: a string that contains the list of attributes to snippet alongside the
  *                      number of words to return (syntax is `attributeName:nbWords`). Attributes are separated by a
  *                      comma (Example: attributesToSnippet=name:10,content:10). You can also use a string array
  *                      encoding (Example: attributesToSnippet: ["name:10","content:10"]). By default no snippet is
  *                      computed.
  *                      - minWordSizefor1Typo: the minimum number of characters in a query word to accept one typo in
  *                      this word. Defaults to 3.
  *                      - minWordSizefor2Typos: the minimum number of characters in a query word to accept two typos
  *                      in this word. Defaults to 7.
  *                      - getRankingInfo: if set to 1, the result hits will contain ranking information in
  *                      _rankingInfo attribute.
  *                      - aroundLatLng: search for entries around a given latitude/longitude (specified as two floats
  *                      separated by a comma). For example aroundLatLng=47.316669,5.016670). You can specify the
  *                      maximum distance in meters with the aroundRadius parameter (in meters) and the precision for
  *                      ranking with aroundPrecision
  *                      (for example if you set aroundPrecision=100, two objects that are distant of less than 100m
  *                      will be considered as identical for "geo" ranking parameter). At indexing, you should specify
  *                      geoloc of an object with the _geoloc attribute (in the form {"_geoloc":{"lat":48.853409,
  *                      "lng":2.348800}})
  *                      - insideBoundingBox: search entries inside a given area defined by the two extreme points of a
  *                      rectangle (defined by 4 floats: p1Lat,p1Lng,p2Lat,p2Lng). For example
  *                      insideBoundingBox=47.3165,4.9665,47.3424,5.0201). At indexing, you should specify geoloc of an
  *                      object with the _geoloc attribute (in the form {"_geoloc":{"lat":48.853409, "lng":2.348800}})
  *                      - numericFilters: a string that contains the list of numeric filters you want to apply
  *                      separated by a comma. The syntax of one filter is `attributeName` followed by `operand`
  *                      followed by `value`. Supported operands are `<`, `<=`, `=`, `>` and `>=`. You can have
  *                      multiple conditions on one attribute like for example numericFilters=price>100,price<1000. You
  *                      can also use a string array encoding (for example numericFilters: ["price>100","price<1000"]).
  *                      - tagFilters: filter the query by a set of tags. You can AND tags by separating them by
  *                      commas.
  *                      To OR tags, you must add parentheses. For example, tags=tag1,(tag2,tag3) means tag1 AND (tag2
  *                      OR tag3). You can also use a string array encoding, for example tagFilters:
  *                      ["tag1",["tag2","tag3"]] means tag1 AND (tag2 OR tag3). At indexing, tags should be added in
  *                      the _tags** attribute of objects (for example {"_tags":["tag1","tag2"]}).
  *                      - facetFilters: filter the query by a list of facets.
  *                      Facets are separated by commas and each facet is encoded as `attributeName:value`.
  *                      For example: `facetFilters=category:Book,author:John%20Doe`.
  *                      You can also use a string array encoding (for example
  *                      `["category:Book","author:John%20Doe"]`).
  *                      - facets: List of object attributes that you want to use for faceting.
  *                      Attributes are separated with a comma (for example `"category,author"` ).
  *                      You can also use a JSON string array encoding (for example ["category","author"]).
  *                      Only attributes that have been added in **attributesForFaceting** index setting can be used in
  *                      this parameter. You can also use `*` to perform faceting on all attributes specified in
  *                      **attributesForFaceting**.
  *                      - queryType: select how the query words are interpreted, it can be one of the following value:
  *                      - prefixAll: all query words are interpreted as prefixes,
  *                      - prefixLast: only the last word is interpreted as a prefix (default behavior),
  *                      - prefixNone: no query word is interpreted as a prefix. This option is not recommended.
  *                      - optionalWords: a string that contains the list of words that should be considered as
  *                      optional when found in the query. The list of words is comma separated.
  *                      - distinct: If set to 1, enable the distinct feature (disabled by default) if the
  *                      attributeForDistinct index setting is set. This feature is similar to the SQL "distinct"
  *                      keyword: when enabled in a query with the distinct=1 parameter, all hits containing a
  *                      duplicate value for the attributeForDistinct attribute are removed from results. For example,
  *                      if the chosen attribute is show_name and several hits have the same value for show_name, then
  *                      only the best one is kept and others are removed.
  *
  * @return mixed
  */
 public function search($query, $args = null)
 {
     if ($args === null) {
         $args = [];
     }
     $args['query'] = $query;
     return $this->client->request($this->context, 'POST', '/1/indexes/' . $this->urlIndexName . '/query', [], ['params' => $this->client->buildQuery($args)], $this->context->readHostsArray, $this->context->connectTimeout, $this->context->searchTimeout);
 }
 /**
  * Perform a search inside facets.
  *
  * @param $facetName
  * @param $facetQuery
  * @param array $query
  * @return mixed
  */
 public function searchFacet($facetName, $facetQuery, $query = array())
 {
     $query['facetQuery'] = $facetQuery;
     return $this->client->request($this->context, 'POST', '/1/indexes/' . $this->urlIndexName . '/facets/' . $facetName . '/query', array(), array('params' => $this->client->buildQuery($query)), $this->context->readHostsArray, $this->context->connectTimeout, $this->context->searchTimeout);
 }