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.