2014-08-27 3 views
0

У меня есть индекс с именами полей $ sign в Solr. Переиндексация не является вариантом. В Solr есть функциональные запросы с $ - переменным идентификатором (See here). Когда я называю запрос для получения конкретных полей (фл = $ created_dt, имя), Solr возвращает ошибку

Ошибка синтаксического анализа имя_поля: Отсутствует парам created_dt при анализе функции «$ created_dt, $ имя»

Я понимаю, потому что Solr интерпретирует его как переменную. Есть ли способ исправить это?

ответ

0

В целом, как вы обнаружили, рекомендуется избегать большинства символов в именах полей в Solr. В частности, $ используется для указания отдельных аргументов в строке запроса для замены при разборе (например, foo=$qq&qq=bar).

Существует, однако, небольшой взлом для fl -параметра, который вы можете использовать: если в первом поле нет символа, он должен разобрать ОК. Если вы используете fl=name,$created_dt, он будет работать (хотя вы могли бы иметь и имя $, а также сообщение об ошибке, которое вы включили. Если это так, используйте другое имя поля без $). &fl=name,$foo_i работает не менее 4.9.0.

Возможно, вы захотите планировать переход на более нормализованные имена полей в будущем.

+1

Я отправил fl в запрос без знака $, он был добавлен в исключение Solr. Это действительно сработает, но если вы добавите еще один параметр с значком $ после этого, он не сможет отобразить какие-либо поля, т. Е. Если в запросе есть имя, $ foo1, $ foo2, тогда ответ вернет документы, но без полей. – Windys