Нет, вам придется переиндексировать, и вам нужно будет создать тип поля, чтобы получить совпадения, которые вы хотите. Если вы только заинтересованы в точных совпадениях, чувствительны к регистру и всем, использование поля string
подойдет (а затем используйте инструкцию copyField
для копирования одного и того же содержимого в оба поля, так что вы не нужно изменять код индексации).
Если вы не хотите, чтобы в поиске учитывался регистр символов, используйте TextField с KeywordTokenizer
и LowerCaseFilterFactory
в качестве единственного фильтра в цепочке.
Причину, по которой вам придется переиндексировать, можно показать, если вы подумаете о индексировании John Jepson
. Этот текст будет разбит на John
и Jepson
вашим токенайзером. Когда вы затем отправляете запрос только с John
, Lucene будет искать любой документ, который имеет токен John
. Так как ваша обработка на стороне индекса создала отдельный токен для John
, он будет соответствовать всему, что имеет John
где-то в своем имени.