Развёрнутый вопрос
Процесс решения задачи поиска часто состоит из двух крупных шагов, каждый из которых разбивается на более мелкие:
Настройка поиска
преобразование объектов (например, текстов) в вещественные вектора
построение поискового индекса
настройка функции ранжирования
Выполнение поиска
преобразование запроса в вещественный вектор
грубая выборка кандидатов
сортировка кандидатов с помощью функции ранжирования
Поисковый индекс - набор специальных структур данных, ускоряющих процесс поиска. Так как процесс индексации тоже требует времени, поисковые индексы не всегда имеет смысл строить - например, когда данных мало или данные часто меняются и индекс устаревает быстрее, чем может быть перестроен.
Настройка функции ранжирования выполняется с помощью набора примеров вида "запрос - документ - оценка релевантности по мнению человека". Релевантность - численная величина, характеризующая соответствие найденного документа запросу (чем больше, тем лучше документ подходит под запрос).
Пусть у нас есть коллекция документов, которые на шаге 1.1 были преобразованы в следующие вектора
ID документа
Признаки
1
(0,1)(0,1)(0, 1)
2
(1,0)(1,0)(1, 0)
3
(1,0.5)(1,0.5)(1, 0.5)
Также у нас есть функция ранжирования Relevance(q,d)=−(q1−d1)2−2(q2−d2)2Relevance(q,d)=−(q1−d1)2−2(q2−d2)2Relevance(q, d) = - (q_1 - d_1)^2 - 2 (q_2 - d_2)^2, где (q1,q2)(q1,q2)(q_1, q_2) - признаки запроса, а (d1,d2)(d1,d2)(d_1, d_2) - признаки документа.
Нам пришел запрос с признаками (1,1)(1,1)(1, 1).
Отсортируйте документы в порядке убывания релевантности относительно данного запроса.

К сожалению, у нас пока нет статистики ответов на данный вопрос, но мы работаем над этим.