Язык запросов Рамблера: изменения

Влад Шабанов сообщает на форуме Рамблера от 29 сентября: Язык запросов: изменения в семантике операторов.

Изменение в поисковой машине затронуло язык запросов. Основная идея — сейчас между словами вставляется некоторый “клей”, примерно как в TeX (см. книжку Дональда Кнута “Все про TeX”). Поведение – аналогичное, только вот ядро Рамблера не имеет возможности решать задачу поиска наикратчайшего пути в графе (см. главу 14).

Сейчас “снаружи” доступны следующие операторы:

a & b
— документы, где одновременно есть a и b, чем ближе, тем лучше. Фактически амперсанд здесь означает кусочек клея с некоторыми стандартными настройками сжимаемости, растяжимости и “оборачиваемости”.

a &< b a &<< b a &<<< b -- вариант оператора & с более жестким клеем. Клей &<<< совсем плохо сжимается и почти не растягивается. a &> b
a &>> b
a &>>> b
— вариант оператора & с более мягким клеем. Запрос, где слова склеены клеем &>>> ранжируется почти как && (см. ниже)

a && b
a AND b
— документы, где одновременно есть a и b, причем все равно на каком расстоянии.

a &&& b
— сайты, где одновременно есть документы, содержащие a и b, причем не обязательно, чтобы a и b были в одном документе. &&& – это еще один вид клея, который помещается уже не между словами, а между документами одного сайта.

a | b
— документы, где есть a или b, причем одновременно a и b — лучше, а уж если рядом, то совсем хорошо

a || b
— документы, где есть a или b, все равно, радом или нет, на ранжирование не влияет

(N, a & b & c …)
— ограничение расстояния между словами.

“a * b”
— буквальный поиск, * — джокер (любое слово или знак препинания). Найдет все документы, где есть a и b, причем между ними стоит в точности одно слово. Разумеется, звездочек может быть несколько.

a NOT b
— отрицание.

Операторы &&&&, |||, ||||, &<.> и так далее зарезервированы на будущее.

Пробелы, знаки препинания — это такие “волшебные” операторы, которые в зависимости от контекста заменяются на
что-то из перечисленного выше (или еще на что-нибудь :-).

Вот бы Яндекс так сообщал…
Все, иду тестить. 🙂

Перемножать или складывать?

Волнует вопрос: как учитывается совокупность параметров страницы поисковиками.
Пусть есть один параметр, например, частота слова в тексте. Пусть есть другой, например, частота слова в тайтле.
Конечно, зависимость от частоты может быть очень грубой, может быть интервал “одинаковооптимальных” значений частоты.
Но пусть есть 2 параметра (текстовых) релевантности. Скажем, “релевантность по тексту” (x) и “релевантность по тайтлу” (y).
Как они должны комбинироваться при расчете релевантности документа, имеющего и то, и другое?
Первый вариант – перемножить. Но тогда документы с нулевым значением одного из параметров будут в дауне. Если мы ориентируемся на этот вариант, надо набрать максимальное количество “разных” параметров и каждому придать ненулевое значение, а лучше оптимальное. Оптимизировать, типа.
Второй вариант – сложить. Этот вариант плох тем (с т.зр. качества поиска), что действительно релевантные документы, имеющие и то, и другое, не получают преимуществ перед документами, имеющими что-нибудь одно. Если мы ориентируемся на этот вариант, методика действий – выбрать действенный (наиболее) параметр и размножать его. Хотя это напрямую не следует.
***
Отвлечемся.
В каждом из параметров релевантности могут быть намешаны интенсивные (частота слова, f) и экстенсивные (число слов, n) величины. И экстенсивные реально есть. Поэтому тут возможна такая ситуация, что “оптимальности” нет – грубо говоря, возьми страницу в 2 раза больше с такой же частотой слова и получи в 1.89 раза больше релевантности по этому слову. И так далее, пока фантазии хватит.
По-хорошему, здесь зависимость могла бы быть чем-то вроде “колокола” по интенсивной величине, умноженное на экстенсивную величину с затуханием на некоем ее размере.
Что-то вроде:
x=exp(-(1-f/f0)^2)*[1 плюс (n-1)*exp(1-(n/nmax))]
***
Вроде как нужна комбинация первого и второго варианта. Что-то вроде:
R=ax плюс bxy плюс cy