Я только что попал в, казалось бы, простой, но чрезвычайно сложный мир поиска. Для приложения мне необходимо создать механизм поиска для поиска пользователей по их именам.
После прочтения многочисленных постов и статей, в том числе:
Как я могу использовать Lucene для поиска личного имени (имени, фамилии)?
http://dublincore.org/documents/1998/02/03/name-representation/
Каков наилучший способ поиска в социальной сети, установив приоритеты отношений с пользователями в первую очередь?
http://www.gossamer -threads.com / списки / Lucene / Java-пользователь / 120417
Вопрос по Lucene Index и Query Design - Поиск людей
Lucene Fuzzy Поиск имен клиентов и частичных адресов
... и несколько других, которых я не могу найти в данный момент. И чтобы на моем компьютере работали как минимум индексирование и базовый поиск, я разработал следующую схему поиска пользователей:
1) Иметь поле имени, второго и третьего имени и индексировать поля с помощью Solr
2) Используйте edismax в качестве requestParser для поиска по нескольким столбцам
3) Используйте комбинацию фильтров нормализации, таких как: транслитерация, перевод с латыни на ascii и т. Д.
4) Наконец используйте нечеткий поиск
Очевидно, что, будучи новичком в этом, я не уверен, что вышесказанное является лучшим способом сделать это, и хотел бы услышать от опытных пользователей, которые имеют лучшую идею, чем я, в этой области.
Мне нужно иметь возможность сопоставлять имена следующими способами:
1) Сгибание акцента: Йорн совпадает с Йорном и наоборот
2) Альтернативные варианты написания: Карл соответствует Карлу и наоборот
3) Сокращенные представления (я полагаю, что я делаю это с помощью SynonymFilterFactory): Сью соответствует Сюзанне и т. Д.
4) Сопоставление Левенштейна: Джонн соответствует Джону и т. Д.
5) Соответствие эхолота: Элин и Эллен
Любые указания, критика или комментарии приветствуются. Пожалуйста, дайте мне знать, если это возможно ... или, возможно, я просто мечтаю. :)
EDIT
Я также должен добавить, что у меня также есть поле с полным именем на случай, если у некоторых людей есть длинные имена, например, из одного из постов: Джон Пол или Дель Кармен должны также соответствовать Джону Полу Дель Кармен
И поскольку это новый проект, я могу изменять схему и архитектуру любым удобным для меня способом, поэтому существуют очень ограниченные ограничения.