Я просто отважился на, казалось бы, простой, но чрезвычайно сложный мир поиска. Для приложения мне необходимо создать механизм поиска для поиска пользователей по их именам.
После прочтения многочисленных сообщений и статей, в том числе:
Как использовать Lucene для личного имени (имя, фамилия)?
http://dublincore.org/documents/1998/02/03/name-representation/
Каков наилучший способ поиска в социальной сети, перенесив сначала отношения с пользователями?
http://www.gossamer-threads.com/lists/lucene/java-user/120417
Вопрос о Lucene и вопросе дизайна запросов - Поиск людей
Lucene Fuzzy Поиск имен и частичных адресов клиентов
... и несколько других, которых я не могу найти в данный момент. И, по крайней мере, индексирование и базовый поиск, работающие на моей машине, я разработал следующую схему поиска пользователей:
1) Имейте поле первого, второго и третьего имени и проиндексируйте те, у кого есть Solr
2) Используйте edismax как requestParser для поиска нескольких столбцов
3) Используйте комбинацию фильтров нормализации, таких как: транслитерация, переход от латинского алфавита и т.д.
4) Наконец, используйте нечеткий поиск
Очевидно, что, будучи очень новым в этом, я не уверен, что это лучший способ сделать это, и хотел бы услышать от опытных пользователей, которые имеют лучшую идею, чем я в этой области.
Мне нужно иметь возможность сопоставлять имена следующими способами:
1) Акцентная сгибание: Юрн соответствует Йорну и наоборот.
2) Альтернативные варианты написания: Карл соответствует Карлу и наоборот
3) Укороченные представления (я считаю, что я делаю это с SynonymFilterFactory): Sue соответствует Susanne и т.д.
4) Левенштайн: Джонн соответствует Джону и т.д.
5) Соответствие Soundex: Элин и Эллен
Любое руководство, критика или комментарии приветствуются. Пожалуйста, дайте мне знать, если это возможно... или, возможно, я просто мечтаю.:)
ИЗМЕНИТЬ
Я также должен добавить, что у меня также есть поле fullname в случае, если у некоторых людей есть длинные имена, в качестве примера из одного из сообщений: Jon Paul или Del Carmen также должны соответствовать Jon Paul Del Carmen
И поскольку это новый проект, я могу изменить схему и архитектуру любым способом, который я считаю нужным, поэтому существуют очень ограниченные ограничения.