То, что вы в основном хотите, это поисковая система :) Вот основные шаги, которые вы должны выполнить -
- Вам необходимо создать «Перевернутый указатель» для содержимого, в котором вы хотите выполнить поиск.
- Индекс представляет собой пару «имя» => «значение». Вы можете иметь эту пару любым способом (настроенным в соответствии с вашими данными и потребностями.
Например. для вашей проблемы двойных имен, вы можете разделить все свои имена на отдельные слова и проиндексировать это так -
'lee'=>'lee harvey'
'harvey'=>'lee harvey'
...
таким образом, когда кто-то ищет «Ли», он получает «Ли Харви». Есть и другие лучшие подходы к так называемой индексации «n-грамм». Проверьте это ...
Возможно, вы могли бы создать индексы имен, адресов, адресов электронной почты и т. Д., А когда пользователь вводит запрос, сверяйте его со всеми вашими индексами, используя предложенный выше подход. После того, как вы получите результаты, объедините их. Может быть, вы могли бы ввести понятие ранга, чтобы вы могли отсортировать результаты и показать самые последние или наиболее релевантные в верхней части. Для этого вам нужно найти способ оценить ваши условия ...