Можно ли вернуть все результаты из Solr, если пользовательский запрос содержит только стоп-слова?

Я хотел бы, чтобы Solr возвращал все результаты, если пользовательский запрос содержит только стоп-слова, например. q=the, (по умолчанию Solr возвращает 0 результатов). Есть ли какой-либо флаг в конфигурации Solr, который я могу включить, или какая-либо конструкция синтаксиса запроса Solr, которую я могу использовать для достижения этой цели?

Мне действительно не нравится идея дублировать логику стоп-слов на стороне клиента и запускать q=*:*, если все термины являются стоп-словами.


person Aliya    schedule 13.11.2012    source источник
comment
Используете ли вы стоп-фильтр или анализаторы для стоп-фильтров? было бы лучше, если бы вы могли предоставить нам некоторые подробности о вашей конфигурации стоп-слов, если вы используете какие-либо   -  person denizdurmus    schedule 14.11.2012
comment
пожалуйста, попробуйте объяснить свою мотивацию немного больше. по-видимому, не очень часто пользователь хочет, чтобы все документы были возвращены из поиска, не запрашивая этого явно.   -  person joeln    schedule 14.11.2012


Ответы (2)


Ознакомьтесь с анализатором запросов Edismax, который обрабатывает запрос отличается, если запрос состоит из всех стоп-слов.

включает расширенную обработку стоп-слов: стоп-слова не требуются в обязательной части запроса, но по-прежнему используются в части повышения близости. Если запрос состоит из всех стоп-слов, например «быть или не быть», то все слова обязательны.

Хотя это не будет работать как запрос всех (*:*) результатов, но, безусловно, будет соответствовать большинству результатов.

person Jayendra    schedule 14.11.2012
comment
можете ли вы написать запрос edismax, объясняющий поиск стоп-слов, если во фразе есть только стоп-слова. - person MTA; 31.01.2017

Хитрым решением этой проблемы было бы установить q=*:* AND _query_:"{! var=$userq}" и отправить пользовательский запрос в параметр URL-адреса userq вместо q.

Это явно устанавливает результат как пересечение всех документов и пользовательского запроса (если вы не знакомы с синтаксисом _query_:"{!...}", см. http://wiki.apache.org/solr/LocalParams).

Обратите внимание, что это вернет разные оценки, но в том же порядке, по сравнению с одним только запросом пользователя.

person joeln    schedule 14.11.2012