Добавление параметров необработанного запроса в запросы SolrQuery - PullRequest
0 голосов
/ 28 июня 2018

Я использую SolrClient с SolrQuery объектом, но мне нужно добавить к нему RawQueryParameters: enter image description here

Как это сделать? Я довольно плохо знаком с запросами Solr и не могу найти такую ​​опцию в документации.

Пока у меня есть это:

$SolrQuery = new \SolrQuery();
$SolrQuery->setStart($this->offset);
$SolrQuery->setRows($this->limit);
$SolrQuery->setQuery($request);
$SolrQuery->addField('*')->addField('units:[subquery]');
$SolrQuery->addParam('units.q', '{!terms%20f=id%20v=$row.unit_ids}');

При запуске toString() на этом объекте я получаю:

start=0&rows=2147483647&q=type:address&fl=*,units:[subquery]&units.q={!terms%20f=id%20v=$row.unit_ids}

каков правильный запрос. Это отлично работает в CLI, но дает исключение при выполнении в PHP как $queryResponse = $SolrClient->query($SolrQuery);:

Exception: while invoking units:[subquery] on doc=SolrDocument{id=stored,indexed,tokenized,omitNorms,indexOptions=DOCS

РЕДАКТИРОВАТЬ: Решение было использовать addParam() без URL-кода запроса. Пробелы проходят просто отлично!

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете получить активные параметры, вызвав ->toString() для объекта SolrQuery - поскольку SolrQuery наследуется от SolrModifiableParams, вы можете вызвать addParam непосредственно для объекта запроса, чтобы добавить пользовательские параметры. Это позволяет добавить любой параметр, который вы хотите в запрос. Будьте внимательны при добавлении параметра дословно, так как SolrQuery должен обработать необходимое экранирование для вас.

Если вы по-прежнему видите ошибку, вы можете проверить ведение журнала на сервере Solr (в разделе Admin -> Logging). Если уровень журнала установлен на INFO, Solr будет регистрировать все запросы, чтобы вы могли увидеть, что на самом деле получил Solr. Любые исключения также должны присутствовать в этом журнале, если они генерируются на стороне Solr.

Расширение Solr обычно генерирует исключения как класс SolrClientException, что может быть полезно для определения источника ошибки. список сообщений об исключениях также доступен в источнике расширения , если вам необходимо продолжить отладку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...