В Solr documentaion я вижу, что с помощью dismax я могу поместить значение запроса от пользователя так, как есть. https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+ParserDismax-анализатор запросов и специальные значения
Анализатор запросов DisMax поддерживает чрезвычайно упрощенное подмножество синтаксиса Lucene QueryParser . Как и в Lucene, котировки могут использоваться для группировки фраз, а +/- могут использоваться для обозначения обязательных и необязательных предложений. Все другие Lucene анализатор запросов специальные символы (кроме AND и OR) экранируются упростить пользовательский опыт
Таким образом, только те значения имеют некоторые специальные значения: AND, NOT, +, -,»
Но когда я использую НЕ фразу она также ведет себя как логический оператор Кроме того, когда у меня есть запрос:.
q:"Difference Java &&",
я получаю:
"metadata":[
"error-class","org.apache.solr.common.SolrException",
"root-error-class","org.apache.solr.parser.ParseException"],
"msg":"org.apache.solr.search.SyntaxError: Cannot parse 'Difference Java &&': Encountered \"<EOF>\" at line 1, column 18.\r\nWas expecting one of:\r\n <NOT> ...\r\n \"+\" ...\r\n \"-\" ...\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <LPARAMS> ...\r\n \"filter(\" ...\r\n <NUMBER> ...\r\n <TERM> ...\r\n \"*\" ...\r\n ",
"code":400}}
Не понял ли я что-то или его ошибка в документации? Есть ли какой-то простой способ игнорировать все специальные символы lucene и просто вызывать запрос пользователя от пользователя в результате разборки запроса? Стандартный токенизатор должен в любом случае использовать эти значения (это нормально для меня)
вы могли бы разместить весь SOLR запрос, который вы делаете –
я подозреваю, что вы на самом деле не использовать кавычки. SyntaxError _would have_ включал такие кавычки: 'Can not parse '\" Difference Java && \ "''. Однако с кавычками не было бы ошибки. Если какой-либо из моих запросов DisMax (без кавычек) заканчивается или начинается с '&&' или 'AND' или' || 'или' OR', такая же синтаксическая ошибка, как указано выше. Пример запроса: q = hello + AND & df = content & defType = dismax'. Мне интересно, будет ли это ожидаемым поведением или должно считаться ошибкой, учитывая, что DisMax должен обрабатывать ввод от обычных пользователей, таких как веб-поисковая система. – Felizett