Как найти отрицательное число в Solr? - PullRequest
7 голосов
/ 22 ноября 2011

В solr я хочу найти одно поле с отрицательным числом, например, nodeId: -1. в schema.xml я определил это так:

solr выдает ошибку при использовании «nodeId: -1» для поиска следующим образом: org.apache.lucene.queryParser.ParseException: Невозможно проанализировать 'storeId: -1': Обнаружено "" - "" - "" в строке 1, столбец 8. Ожидается один из: "(" ... "*". .. ... ... ... ... "[" ... "{" ... ...

Я должен искать с storeId: \ - 1 или storeId: "- 1", чтобы получить ответ.

Теперь вопрос: Могу ли я изменить любые файлы конфигурации solr для поиска без каких-либо escape-символов? Или другой способ решить эту проблему без изменения кода Java. Спасибо.

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Лично я считаю, что экранирование внутри вашего Java-кода - лучший способ. ClientUtils.escapeQueryChars будет выбранным методом.

2 голосов
/ 22 ноября 2011

"-" - это специальный символ для синтаксического анализатора запросов, который используется для пометки некоторых предложений как запрещенных.Если вы не хотите экранировать этот символ, вам нужно изменить синтаксический анализатор запросов.

Возможно, вы захотите попробовать необработанный анализатор запросов : q={!raw f=nodeId}-1, но онни одна из функций парсера запросов по умолчанию.На самом деле, синтаксический анализатор необработанных запросов позволяет только выполнять запросы с чистыми терминами.

...