Solr Query не разбирает косую черту

Косая черта "/" является зарезервированным символом в именах полей solr?

У меня проблемы с написанием запроса сортировки Solr, который будет анализировать для полей, содержащих косую черту "/"

При выполнении http-запроса на мой сервер Solr:

q=*&sort=normal+desc

Будет работать но

q=*&sort=with/slash+desc
q=*&sort=with%2Fslash+desc

Оба не говорят "не может использовать FieldCache на многозначном поле: с"

Каждый документ solr содержит два поля типа int: "normal" и "with / slash". С моей схемой Solr индексация полей как

...
<field name="normal" type="int"   indexed="true" stored="true" required="false" />
<field name="with/slash" type="int"   indexed="true" stored="true" required="false" />
...

Есть ли какой-то особый способ кодирования косой черты в solr? Или я могу использовать другие символы-разделители? Я уже использую '-' и "." для других целей.

4 ответа

Я только что столкнулся с той же проблемой, и после некоторого эксперимента обнаружил, что если у вас есть прямая косая черта в имени поля, вы должны экранировать его обратной косой чертой в запросе Solr (но учтите, что вам не нужно делать это в параметр списка полей, поэтому поиск ищет /my/field/name содержащий my_value вводится в поле "q" как:

\/my\/field\/name:my_value

Я не пробовал поле сортировки, но попробуйте и дайте нам знать:)

Это на Solr 4.0.0 альфа.

Из вики Solr по адресу https://wiki.apache.org/solr/SolrQuerySyntax:

В Solr 4.0 добавлена ​​поддержка регулярных выражений, что означает, что "/" теперь является специальным символом и должен быть экранирован при поиске буквального слеша.

В моем случае мне нужно было искать косую черту / с джокером *Например:

+(*/*)
+(*2016/17*)

Я пытался избежать этого так:

+(*2016\/*)
+(*2016\/17*)

но это тоже не сработало.

решение заключалось в том, чтобы заключить текст в двойные кавычки " как сделать:

+("*\/*")
+("*/*")

+("*2016\/17*")
+("*2016/17*")

оба возвращали одинаковый результат с и без экранирования

В моем случае я использовал пользовательский интерфейс Solr Admin для запуска запросов, которые мне приходилось искать по URL-адресу с косой чертой.

текст:www.myurl.com/test => вернул нежелательные результаты текст: «www.myurl.com/test» => вернул желаемые результаты.

Для реализации индексации Solr Search достаточно заключить строку поиска в кавычки, если вы используете пользовательский интерфейс Solr Admin.

Другие вопросы по тегам