/** * Converts the WP_Query to a Cloud_Search_Query * @return Cloud_Search_Query */ public function get_cs_query() { $cs_query = new Cloud_Search_Query(); $cs_query->add_facet(apply_filters('lift_search_facets', array())); $parameters = apply_filters('list_search_bq_parameters', array(sprintf("(label '%s')", $this->wp_query->get('s'))), $this); //filter to the current blog/site $parameters[] = new Lift_Expression_Set('and', array(new Lift_Expression_Field('site_id', lift_get_current_site_id(), false), new Lift_Expression_Field('blog_id', get_current_blog_id(), false))); $boolean_query = sprintf('(and %s)', trim(implode(' ', $parameters))); $cs_query->set_boolean_query($boolean_query); // size $posts_per_page = $this->wp_query->get('posts_per_page'); if ($posts_per_page < 0) { $posts_per_page = 9999999; } $cs_query->set_size($posts_per_page); // start $paged = $this->wp_query->get('paged'); $start = 0; if ($paged > 1) { $start = $posts_per_page * ($paged - 1); } $cs_query->set_start($start); $orderby_values = array('date' => 'post_date_gmt', 'relevancy' => 'text_relevance'); // rank $order = $this->wp_query->get('order'); $orderby = isset($orderby_values[$this->wp_query->get('orderby')]) ? $orderby_values[$this->wp_query->get('orderby')] : $orderby_values['relevancy']; if ($orderby) { $cs_query->add_rank($orderby, $order); } // return fields $cs_query->add_return_field('id'); do_action_ref_array('get_cs_query', array($cs_query)); return $cs_query; }
/** * Sends the search to the CloudSearch API * @param Cloud_Search_Query $query */ public function sendSearch($query) { $response = $this->send('GET', $query->get_query_string()); if ($response && property_exists($response, 'error')) { $this->error_messages = $response->messages; return false; } if (in_array($this->http_interface->getStatusCode(), array(200, 201, 204))) { return $response; } return false; }
/** * Adds the facet data to the query * @param Cloud_Search_Query $cs_query */ public function setFacetOptions($cs_query) { $facets = array(); $cs_query->add_facet($this->field->getName()); }