8.5. Релевантность

8.5.1. Упорядочивание документов

При сортировке документов перед выдачей результата поиска DataparkSearch по умолчанию учитывает два параметра каждого документа: релевантность и популярность. Сначала документы сортируются по релевантности, а при равенстве, по популярности.

8.5.2. Расчёт релевантности

Релевантность каждого документа вычисляется как косинус угла между вектором весов этого документа и вектором весов, соответствующему поисковому запросу, умноженный на 100%. Число координат векторов весов равно произведению числа слов в запросе (с учётом всех словоформ и синонимов) на число секций, определённых в indexer.conf. Каждая координата вектора весов соответсвует слову из запроса в той или иной секции документа. И значение для этой координаты вычисляется на основе весов секций, заданных параметром wf (см. Разд. 8.1.3>) и на основании того, является ли данное слово именно указанным в запросе или его словоформой. Также еще одна координата соответсвует среднему расстоянию между найденными словами в данном документе. Для вектора запроса эта координата полагается равной 0.

Т.к. в файлах конфигурации поисковых фронтэндов (searchd.conf или search.htm) не предусмотрено указание секцией, используйте команду NumSections для указания числа используемых секций (по умолчанию оно равно 256). Впрочем, точное число секций не играет решающей роли в порядке сортировки документов, только в значении рейтинга релевантности.

Таблица 8-3. Параметры расчёта релевантности, задаваемые при компиляции (ключи для configure)

--enable-rel

Включает полный (full), быстрый (fast) или ультра (ultra) вариант расчёта релевантности. Значение по умолчанию: full (или полный расчёт релевантности).

--disable-reldistance

Выключает учёт среднего растояния между словами при расчёте релевантности. Значение по умолчанию: включено.

--disable-relposition

Выключает учёт позиции первого слова из запроса в тексте документа при расчёте релевантности. Значение по умолчанию: включено.

--disable-relwrdcount

Выключает учёт чисел вхождения слов из запроса в найденом документе при расчёте релевантности. Значение по умолчанию: включено.

--with-bestpos=NUM

Задаёт NUM в качестве лучшего значения первой позиции слова запроса в найденом документе. Значение по умолчанию: 4.

--with-bestwrdcnt=NUM

Задаёт NUM в качестве лучшего числа каждого из слов запроса в найденом документе. Значение по умолчанию: 11.

--with-distfactor=NUM

Задаёт NUM в качестве коэффициента для среднего растояния между словами запроса в найденом документе. Значение по умолчанию: 0.2.

--with-posfactor=NUM

Задаёт NUM в качестве коэффициента для расстояния между первой позицией слова запроса в найденом документе и значением, указаным параметром --with-bestpos. Значение по умолчанию: 0.5.

--with-wrdcntfactor=NUM

Задаёт NUM в качестве коэффициента для расстояния между числом слова запроса в найденом документе и значением, указаным параметром --with-bestwrdcnt. Значение по умолчанию: 0.4.

--with-wrdunifactor=NUM

Задаёт NUM в качестве коэффициента для величины отклонения количеств вхождения слов запроса в найденый документ от равномерного распределения. Значение по умолчанию: 1.5.

8.5.3. Рейтинг популярности

DataparkSearch поддерживает два метода расчёта рейтинга популярности. Метод, использовавшийся в предыдущих версиях получил название Goo, а новый метод называется Neo. По умолчанию используется метод Goo. Чтобы выбрать нужный метод расчёта популярности используйте команду PopRankMethod:

PopRankMethod Neo

Для метода расчёта популярности Neo,а также для полного варианта метода Goo вам необходимо включить сбор ссылок между страницами командой CollectLinks yes в вашем файле конфигурации indexer.conf. Однако, это незначительно уменьшает скорость индексирования, поэтому по умолчанию сбор этих ссылок выключен.

По умолчанию, для расчета рейтинга популярности используются только ссылки между различными сайтами. Если в indexer.conf указана опция PopRankSkipSameSite no, то при расчёте рейтинга популярности учитываются все ссылки.

Вы можете присвоить начальное значение рейтинга популярности страницы используя МЕТА таг DP.PopRank (см. Разд. 4.3>).

8.5.3.1. Метод расчёта популярности Goo

Рейтинг популярности рассчитывается в два этапа. На первом этапе значение параметра Weight для каждого сервера делится на число ссылок со страниц этого сервера. Таким образом определяется вес одной ссылки с этого сервера. На втором этапе для каждой страницы находится ссума весов всех ссылок, указывающих на эту страницу. Эта сумма и является индексом популярности страницы.

По умолчанию значение параметра Weight для каждого сервера равно 1. Изменить это значение вы можете непосредственно в SQL-таблице server или при помощи команды ServerWeight в файле конфигурации indexer.conf.

Если в indexer.conf указана опция PopRankFeedBack yes, то перед расчётом рейтинга популярности страниц рассчитывается рейтинг сайтов. Для этого для каждого сайта находится сумма популярности всех его страниц, если она окажется меньше 1, то рейтинг сайта полагается равным 1, в противном случае он полагается равным найденной сумме.

Если в indexer.conf указана опция PopRankUseTracking yes, то перед расчётом рейтинга популярности страниц в качестве рейтинга сайтов будет использована сумма числа запросов уточнения поиска для каждого сайта (т.е. число запросов поиска только среди документов с этого сайта).

Если в search.htm (или searchd.conf) указана опция PopRankUseShowCnt yes, то для каждого выводимого пользователю результата поиска, имеющего значение релевантности выше, заданного командой PopRankShowCntRatio (по умолчанию используется значение 25.0), значение url.shows увеличивается на 1. Если в indexer.conf указана опция PopRankUseShowCnt yes, то при расчёте рейтинга популярности страниц, к полученному на предыдущих этапах значению рейтига каждой страницы будет прибавлено значение url.shows, умноженное на значение, заданное опцией PopRankShowCntWeight (по умолчанию используется значение 0.01).

При этом методе расчёта популярности подразумевается, что страницы являются нейронами, а ссылки между страницами являются связями между нейронами. Такми образом для образованой нейросети можно использовать один методов её обучения - метод обратного распространения ошибки. Рейтингом популярности страницы в данном случае считается уровень активности соответствующего нейрона. См. краткое описание метода расчёта популярности Neo.

Вы можете использовать команду PopRankNeoIterations для задания числа итераций при расчёте популярности методом "Neo". Значение по умолчанию: 3.

По умолчанию, расчёт рейтинга популярности методом "Neo" ведётся одновременно с индексирования. Для ускорения индексирования, вы можете отложить расчёт рейтинга популярности методом "Neo" указав команду:

PopRankPostpone yes

Затем вы можете расчитать рейтинг популярности методом "Neo" также как и для метода "Goo", т.е.: indexer -TR

8.5.4. Булевы запросы

При булевом поиске, состоящем из двух и более слов, необходимо вводить операторы (&, |, ~). Т.е. необходимо вводить a & book вместо a book. См. также Разд. 8.1.7>.

8.5.5. Crosswords

Эта возможность позволяет связать слова между <a href="xxx"> и </a> с документом, на который указывает данная ссылка, а также слова из аттрибута alt тэга img с картинкой, на которую указывает этот тэг. Для включения этой возможности, используйте команду CrossWords yes в indexer.conf и search.htm, а также определите секцию crosswords в файле sections.conf.

При помощи команды CrossWordsSkipSameSite можно управлять сбором кросс-слов со страниц того же сайта. Если указана опция yes (по умолчанию), то сбор кросс-слов со страниц того же сайта не происходит. Для включения учета таких слов необходимо явно задать опцию no:

CrossWordsSkipSameSite no

8.5.6. Алгоритм Построения Рефератов (SEA)

Алгоритм Построения Рефератов (SEA) позволяет построить реферат из трёх наиболее релевантных предложений для каждого проиндексированого документа, состоящего из более 6 предложений. Чтобы включить эту возможность, добавьте эту команду в ваш файл seaction.conf:

Section sea x y
где x - номер секции и y - максимальный размер значения секции, задайте его равным 0, если вы не хотите показывать эту секцию на тсраницах результатов поиска. Если вы указываете ненулевое значение для y, вы можете использовать мета-переменную $(sea) в вашем шаблоне поиска для отображения реферата в результатах поиска.

Соответствующие команды конфигурирования:

Команда SEASentenceMinLength задаёт минимальную длину предложения, которое будет использовано для создания реферата. Значение по умолчанию: 32.

Команда SEASentences используется для задания максимального числа предложений, используемых при построении реферата. Значение по умолчанию: 64. В виду нелинейной сложности алгоритма SEA, вы можете установить значение этого параметра исходя из желаемой производительности индексирования.

При помощи команды SEASections вы можете указать список секций документов, по которым будут строиться рефераты. По умолчанию, для построения рефератов используется только секция "body".

SEASections "body, title"