Если не ошибаюсь, в поиске участвуют алгоритмы так называемых нейронных сетей. Это способ, при котором программа сама в некоторой степени обучается поиску, ей помогают люди-асессоры, поправляют результаты. В общем, все очень трудно, там работают мега-инженеры.