SphinxClient::query
(PECL sphinx >= 0.1.0)
SphinxClient::query — Выполнение поискового запроса
Описание
public array SphinxClient::query
( string
$query
[, string $index
= "*"
[, string $comment
= ""
]] )Подключается к серверу searchd, выполняет указанный поисковый запрос с текущими настройками, получает и возвращает набор результатов.
Список параметров
-
query
-
Строка запроса.
-
index
-
Название индекса (или множество названий).
-
comment
-
Возвращаемые значения
При успехе SphinxClient::query() возвращает список найденных совпадений и дополнительную статистику по запросу. Набор результатов - это (если не указано иное) ассоциативный массив со следующими ключами и значениями:
Ключ | Описание значения |
---|---|
"matches" | Массив с ID найденных документов в качестве ключей и их весами и аттрибутами в качестве значений. |
"total" | Общее число найденных и полученных совпадений (зависит от ваших настроек). |
"total_found" | Общее число найденных документов, удовлетворяющих запросу. |
"words" | Массив со словами (приведенными к одному регистру и словоформе) в качестве ключей и статистика по этим словам в качестве значений. |
"error" | Ошибка запроса, полученная от searchd |
"warning" | Предупреждение, полученное от searchd |
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с поисковыми системами
- Клиент Sphinx
- Функция SphinxClient::addQuery() - Добавление запроса к очереди запросов
- Функция SphinxClient::buildExcerpts() - Построение текстовых фрагментов
- Функция SphinxClient::buildKeywords() - Извлечение ключевых слов из запроса
- Функция SphinxClient::close() - Закрытие ранее открытого постоянного соединения
- Функция SphinxClient::__construct() - Создание нового объекта SphinxClient
- Функция SphinxClient::escapeString() - Экранирование спецсимволов
- Функция SphinxClient::getLastError() - Получение последнего сообщения об ошибке
- Функция SphinxClient::getLastWarning() - Получение последнего предупреждения
- Функция SphinxClient::open() - Создание постоянного подключения к серверу
- Функция SphinxClient::query() - Выполнение поискового запроса
- Функция SphinxClient::resetFilters() - Обнуление всех фильтров
- Функция SphinxClient::resetGroupBy() - Сброс всех настроек группировок
- Функция SphinxClient::runQueries() - Выполнение набора поисковых запросов
- Функция SphinxClient::setArrayResult() - Изменение формата массива с набором результатов запроса
- Функция SphinxClient::setConnectTimeout() - Установка таймаута соединения
- Функция SphinxClient::setFieldWeights() - Установка весовых коэффициентов полей
- Функция SphinxClient::setFilter() - Добавление фильтра по типу поля integer
- Функция SphinxClient::setFilterFloatRange() - Добавление фильтра по диапазону значений (для поля типа float)
- Функция SphinxClient::setFilterRange() - Добавление фильтра по диапазону значений (для поля типа integer)
- Функция SphinxClient::setGeoAnchor() - Установка опорной точки для рассчета географической удаленности
- Функция SphinxClient::setGroupBy() - Установка аттрибута группировки
- Функция SphinxClient::setGroupDistinct() - Установка названия аттрибута для расчета количества уникальных значений при группировке
- Функция SphinxClient::setIDRange() - Установка диапазона значений допустимых ID документов
- Функция SphinxClient::setIndexWeights() - Установка весовых коэффициентов индексов
- Функция SphinxClient::setLimits() - Установка смещения и предельного числа значений для набора результатов
- Функция SphinxClient::setMatchMode() - Установка режима совпадения при полнотекстовом поиске
- Функция SphinxClient::setMaxQueryTime() - Установка максимального времени выполнения запроса
- Функция SphinxClient::setOverride() - Временное переопределение значений атрибута для документов
- Функция SphinxClient::setRankingMode() - Установка режима ранжирования
- Функция SphinxClient::setRetries() - Установка количества повторных попыток и задержки между ними
- Функция SphinxClient::setSelect() - Установка условия выборки
- Функция SphinxClient::setServer() - Установка хоста и порта searchd
- Функция SphinxClient::setSortMode() - Установка режима сортировки результатов
- Функция SphinxClient::status() - Запрос статуса searchd
- Функция SphinxClient::updateAttributes() - Обновление аттрибутов документа
Коментарии
It appears that Query() (or the Sphinx program in general) does have some kind of limit imposed on the maximum length of a query submission. Stumbled across this limitation when trying to perform some searches based on content from user-submitted e-mails.
In looking at the returned array, the 'words' portion only accounts for the first 8 or 9 words of the long query. I'm assuming that the rest of the string is being truncated. The number of accepted words appears to change based on the total length of the words. Just a heads-up.
There is also a "status" key showing in what status query has ended.
Here are codes, taken from searchd.cpp:
<?php
/// known status return codes
enum SearchdStatus_e
{
SEARCHD_OK = 0, ///< general success, command-specific reply follows
SEARCHD_ERROR = 1, ///< general failure, error message follows
SEARCHD_RETRY = 2, ///< temporary failure, error message follows, client should retry later
SEARCHD_WARNING = 3 ///< general success, warning message and command-specific reply follow
};
?>
public array SphinxClient::query ( string $query [, string $index = "*" [, string $comment = "" ]] )
If you add a value for comment, you can retrieve them in sphinx query log.
You can limit the search to certain indexes separated by anything other than letters, numbers, underscores, and dashes.
<?php
// All valid
$client->Query('test', 'main delta');
$client->Query('test', 'main;delta');
$client->Query('test', 'main, delta');
$client->Query('test', 'main:delta');
?>