2014-01-09 4 views
3

Использования Solr 4.6.0 следующий запрос возвращает не результатов:Нетых Результатов поиска Solr д = *: *

solr/select/?q=*:* 

Но удаление параметра q возвращает всех результатов, например:

solr/select/ 

конфигурация обработчика запроса содержит invarient:

<str name="q.alt">*:*</str> 

Поскольку q.alt должен определять запрос, если q не предоставляется, не должны ли эти два вопроса быть идентичными и возвращать результаты? Каковы возможные причины, по которым первая форма не возвращает документы?

Дополнительный фон

Я использую django-haystack 2.1.0 на самом деле подключения к Solr, вышеуказанные запросы только «простейший случай провал» в тех случаях, когда пустые запросы поступают. Я перегрузил стог сена SearchForm, чтобы предотвратить пустые запросы, возвращающие пустые наборы результатов, и это работало с гораздо более старой версией solr и haystack 1.4.

Сеноукладчик «полезно» заполняет q с *:*, если значение не указано. К сожалению, это нарушает запрос, как указано выше. I мог стоп-лоток обезьяны-патча, но я бы лучше исправить проблему в solr.

Обратите внимание, что запросы с заполненными (непустыми) параметрами q работают, например.

solr/select/?q=test 

Это приведет к возвращению результатов, как ожидалось.

+1

Что делает запрос к solr/select? Q = *: * return? – jro

+0

Я думаю, что @jro прав, '/' перед тем, как '?' Мешает. – cheffe

+0

Он возвращает тот же результат (как и следовало ожидать - конечная косая черта не изменяется там, куда направляется запрос). Я добавлю немного больше деталей. – Hamish

ответ

1

Найдено решение.

Обработчик поиска, используемый DisMaxQParserPlugin (defType dismax):

DisMaxQParserPlugin предназначен для обработки простой пользователь ввел фразы (без тяжелого синтаксиса) ...

*:* форма q была недействителен для парсера DisMax, но q.alt обеспечивает резервную ошибку, которая равна «.. по умолчанию используется стандартный синтаксический синтаксический анализ запроса»..

Изменение плагина поискового обработчика до ExtendedDisMax (defType edismax) устраняет проблему.

Смежные вопросы