Solr Query не разбирает косую черту - PullRequest
10 голосов
/ 29 августа 2011

Является ли косая черта "/" зарезервированным символом в именах полей 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? Или есть другие символы-разделители, которые я могу использовать? Я уже использую '-' и "." для других целей.

Ответы [ 3 ]

6 голосов
/ 19 июля 2012

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

\/my\/field\/name:my_value

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

Это на Solr 4.0.0 alpha.

2 голосов
/ 15 января 2016

Из Solr Wiki на https://wiki.apache.org/solr/SolrQuerySyntax:

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

0 голосов
/ 28 августа 2017

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

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

Я пытался избежать этого следующим образом:

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

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

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

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

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

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

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