cfsearch - Ошибка при выполнении запроса: org.apache.lucene.queryParser.ParseException: Невозможно проанализировать: Лексическая ошибка

У меня есть базовый cfsearch, который отлично работает, но иногда он может быть разбит поисковыми строками, как показано ниже;

  • моя строка поиска]

  • "моя строка поиска

  • моя строка поиска [

  • мой поиск: строка

Любое из вышеперечисленного приведет к ошибке, подобной;

Ошибка при выполнении запроса: org.apache.lucene.queryParser.ParseException: Невозможно проанализировать "мою строку поиска": лексическая ошибка в строке 1, столбец 32. Обнаружено: после: "\" строка моего поиска "

Я думал, что смогу убрать эти символы, но у вас может быть рабочий поисковый термин, скажем, с двумя "" - т.е. "моя строка поиска" - которая действительна. Есть ли предпочтительный способ подготовить строку для cfsearch?

Итак, на примере:

"моя строка поиска

это будет лишить первого ". Но если бы поисковый термин был:

"моя строка поиска"

все хорошо - оставь в покое. Есть идеи?! Есть ли другие символы, которые могут вызвать ошибку? Например, хакер попробовал это;

XyOk ".](.]]]

Что вызвало ошибку.

1 ответ

Решение

Используйте VerityClean UDF из CFLib для очистки параметра поиска Verity/Lucene. (ПРИМЕЧАНИЕ: Добавить :, ^ а также * к трубе с разделителями reBadChars переменная, поэтому они будут раздеты для Lucene.)

http://www.cflib.org/udf/verityClean

Другие вопросы по тегам