У меня есть индекс Lucene, в котором есть несколько документов. Каждый документ имеет несколько полей, таких как:
Id
Project
Name
Description
Поле Id будет уникальным идентификатором, таким как GUID, Project - это ProjectID пользователя, и пользователь может просматривать только документы для своего проекта, а Имя и Описание содержат текст, который может содержать специальные символы.
Когда пользователь выполняет поиск в поле «Имя», я хочу попытаться найти лучшее, что я могу, например:
First
Вернет оба:
First.Last
и
First.Middle.Last
Имя также может быть что-то вроде:
Test (NameTest)
Где, если пользователь вводит «Test», «Name» или «(NameTest)», он может найти результат.
Однако, если я скажу, что Project - это «ProjectA», тогда это должно быть точное совпадение (поиск без учета регистра). То же самое относится и к полю Id.
Какие поля я должен установить как Tokenized, а какие как Untokenized? Кроме того, есть ли хороший Анализатор, который я должен рассмотреть, чтобы это произошло?
Я застрял, пытаясь выбрать оптимальный маршрут для осуществления желаемого поиска.