Похоже, все должно быть просто, но я не могу понять, как заставить Lucene игнорировать ключевые слова AND, OR и NOT - анализатор запросов выдает ошибку разбора, когда получает ее. У меня есть класс построителя запросов, который разбивает поисковый термин так, чтобы он выполнял поиск по самим словам, а также по n-граммах в слове. Я использую Lucene в Java.
Таким образом, при поиске, скажем, «ANDERSON COOPER» строка запроса выглядит следующим образом:
name: (ANDERSON COOPER "ANDERSON COOPER")^5 gram4: ( ANDE NDER DERS ERSO RSON
SONC ONCO NCOO COOP OOPE OPER)
анализатор запросов выдает ошибку, когда получает эти AND. В идеале, я бы хотел, чтобы парсер просто игнорировал AND, OR, NOT, и я буду использовать &&, || и! эквиваленты, если они мне нужны - нужно ли изменять код в самом классе QueryParser, чтобы получить это? Или есть более простой способ? Я мог бы также просто вставить escape-символ для этих случаев, если это лучший способ сделать это, но добавление \
перед словом AND, похоже, ничего не делает.