Одна из реализаций данного решения может выглядеть следующим образом. Таблица спам-документов (SPAM_TABLE) создается для хранения уникальных ID документов, которые признаны спамом (изначально таблица будет пустой). Предпочтительно, чтобы данная операция была сделана во время индексирования, описанного выше.
Индекс 150 траверсируется в разрезе документов (всех или достаточного количества образцов, для получения общей картины). Для каждого документа, будет получен набор хороших фраз в документе, а для каждой из этих хороших фраз будет определено количество соотнесенных фраз. Ожидаемое количество E соотнесенных фраз определяется на основании результатов траверсирования документов по хорошим фразам. Определяется также и стандартное отклонение от этого количества. В данной реализации в качестве ожидаемого количества соотнесенных фраз в документе используется медиана (50% персентиль) от общего количества соотнесенных фраз.
Для каждого документа в индексе 150, определяется фактическое количество N соотнесенных фраз для каждой хорошей фразы. (Следовательно, если в документе 20 фраз, то по данному документу получится вектор из 20 значений для N). Это количество соотнесенных фраз будет равно сумме битов, установленных в бит-векторах по соотнесенным фразам для каждой хорошей фразы в документе. Далее, для каждой фразы, значение N сравнивается с ожидаемым значением Е соотнесенных фраз. Результаты этого сравнения, по отдельности для каждой хорошей фразы или совместно для некоторого количества хороших фраз, используются для определения, является ли документ спамом. Существует множество различных тестов, чтобы определить спам-документ.
Подозрение на спам возникает, если фактическое количество N соотнесенных фраз значительно превосходит ожидаемое количество E, по некоторому минимальному количеству хороших фраз. В данной реализации, N значительно превосходит E, если речь идет о некотором количестве отклонений от стандартной величины E, скажем, более пяти случаев превышений стандартного уровня отклонений. В другой реализации, N значительно превосходит E, если оно больше на какую-то постоянную величину, скажем, N>2E. В качестве основы могут использоваться и другие параметры сравнения фактического количества N соотнесенных фраз с ожидаемым количеством E. Как вариант, может использоваться простое сравнение N с предопределенным пороговым значением, к примеру, 100 (ожидается, что это максимальное количество ожидаемых соотнесенных фраз).
Используя любой из вышеописанных тестов, проверяется выполнение поставленного условия для некоторого минимального количества хороших фраз. Минимум может состоять из одной фразы, или, скажем, трех хороших фраз. Если присутствует минимальное количество хороших фраз, которые обладают чрезмерным количеством присутствующих в документе соотнесенных фраз, то документ причисляется к спаму и добавляется в таблицу SPAM_TABLE.
В качестве варианта может поддерживаться другая форма таблицы SPAM_TABLE. Таблица может быть структурирована по фразе, и для каждой фразы существует список одного или более документов, которые включают в себя фразу и которые определены как спам. Подобная версия SPAM_TABLE сделана следующим образом. Для каждого документа, определяются первые N (напр., N=3) наиболее значимых фраз. Это могут быть фразы, для которых их бит-вектора соотнесенных фраз имеют установленными самые левые (наиболее значимые) биты. Как описывалось ранее, биты в бит-векторах соотнесенной фразы сортируются в порядке уменьшения ценности информации по соотнесенной фразе. Таким образом, наиболее значимые биты ассоциируются с соотнесенными фразами с наибольшей ценностью информации.
По каждой из этих наиболее значимых соотнесенных фраз, определяется количество соотнесенных фраз, присутствующих в документе – опять на основе их бит-векторов соотнесенных фраз. Если фактическое количество соотнесенных фраз значительно превосходит ожидаемое количество (на основании результатов любого из описанных тестов), документ определяется как спам по отношению к этой наиболее значимой фразе и добавляется в SPAM_TABLE по данной хорошей фразе. Документ также добавляется в качестве спама по каждой из соотнесенных фраз к этой хорошей фразе, поскольку документ рассматривается как спам по отношению ко всем фразам, соотнесенным друг с другом.
Данный способ определения спам-документов лучше всего применять в течение процесса индексирования, параллельно с другими операциями по индексированию, или после них.
Таблица SPAM_TABLE затем используется во время обработки поискового запроса, как описывается ниже. Поисковый запрос поступает от клиента 190 и обрабатывается поисковой системой 120, как было описано выше, - путем поиска в индексе 150 фраз запроса и соотнесенных фраз. Поисковая система 120 получает некоторый набор результатов, к примеру, 1000 документов, каждый из которых имеет собственный ID документа и соответствующий показатель релевантности. По каждому документу в получившемся наборе, поисковая система 120 проверяет наличие ID документа в SPAM_TABLE (независимо от способа ее реализации), чтобы определить, присутствует ли в ней данный документ.