cfsearch - Ошибка при выполнении запроса: org.apache.lucene.queryParser.ParseException: Невозможно проанализировать: Лексическая ошибка
У меня есть базовый cfsearch, который отлично работает, но иногда он может быть разбит поисковыми строками, как показано ниже;
моя строка поиска]
"моя строка поиска
моя строка поиска [
мой поиск: строка
Любое из вышеперечисленного приведет к ошибке, подобной;
Ошибка при выполнении запроса: org.apache.lucene.queryParser.ParseException: Невозможно проанализировать "мою строку поиска": лексическая ошибка в строке 1, столбец 32. Обнаружено: после: "\" строка моего поиска "
Я думал, что смогу убрать эти символы, но у вас может быть рабочий поисковый термин, скажем, с двумя "" - т.е. "моя строка поиска" - которая действительна. Есть ли предпочтительный способ подготовить строку для cfsearch?
Итак, на примере:
"моя строка поиска
это будет лишить первого ". Но если бы поисковый термин был:
"моя строка поиска"
все хорошо - оставь в покое. Есть идеи?! Есть ли другие символы, которые могут вызвать ошибку? Например, хакер попробовал это;
XyOk ".](.]]]
Что вызвало ошибку.
1 ответ
Используйте VerityClean UDF из CFLib для очистки параметра поиска Verity/Lucene. (ПРИМЕЧАНИЕ: Добавить :
, ^
а также *
к трубе с разделителями reBadChars
переменная, поэтому они будут раздеты для Lucene.)