Изменить стандартный анализатор Lucene
Я пытаюсь найти документы по названию с помощью StandardAnalyzer из Lucene 4.10.3. Я читаю цитаты из файла и добавляю двойные кавычки для построения запроса с помощью этого:
Query query = parser.parse("\""+doc.get("title")+"\"");
Проблема в том, что когда он читает цитату, ФИЛИППИНЫ СКАЗЫВАЮТ, ЧТО ДОЛГ ", ЛУЧЕНЕ, ЧЕМ МЕКСИКА возвращает эту ошибку
Cannot parse '"PHILIPPINES SAYS DEBT PACT "BETTER THAN MEXICO'S"': Lexical error at line 1, column 52. Encountered: <EOF> after : ""
Как я могу решить это?
Спасибо!
1 ответ
Решение
Проблема заключается в том, что нужно избегать цитирования в тексте, который вы ищете. Вы можете избежать поиска текста, используя QueryParser.escape
:
Query query = parser.parse("\"" + QueryParser.escape(doc.get("title")) + "\"");