Вот действительно базовое описание; для более подробной информации, вы можете прочитать этот учебник (бесплатно онлайн): http://informationretrieval.org/¹
1). Для всех файлов создайте индекс. Индекс состоит из всех уникальных слов, которые встречаются в вашем наборе данных (так называемый «корпус»). С каждым словом связан список идентификаторов документов; каждый идентификатор документа относится к документу, который содержит слово.
Вариации: иногда, когда вы генерируете индекс, вы хотите игнорировать стоп-слова ("a", "the" и т. Д.). Однако вы должны быть осторожны («быть или не быть» - это реальный запрос, состоящий из стоп-слов).
Иногда вы тоже произносите слова. Это больше влияет на качество поиска в неанглийских языках, которые в большей степени используют суффиксы и префиксы.
2) Когда пользователь вводит запрос, ищите соответствующие списки и объединяйте их. Если это строгий логический запрос, процесс довольно прост - для AND, docid должен присутствовать во всех списках слов, для OR, хотя бы в одном списке слов и т. Д.
3) Если вы хотите оценить свои результаты, есть несколько способов сделать это, но основная идея состоит в том, чтобы использовать частоту, с которой слово встречается в документе, по сравнению с частотой, на которую вы ожидаете встречаются в любом документе в корпусе, как сигнал о том, что документ более или менее актуален. Смотри учебник.
4) Вы также можете сохранять позиции слов для выведения фраз и т. Д.
Большая часть этого не имеет значения для поиска на рабочем столе, так как вы больше заинтересованы в отзыве (все документы, которые включают термин), чем в рейтинге.
¹ ранее на http://www -csli.stanford.edu / ~ hinrich / information-retrieval-book.html , доступный через устройство обратной связи