JesCid (jescid) wrote in ru_seo,
JesCid
jescid
ru_seo

Category:

"Индексация" Яндекса и его хвалёная морфология.


В кавычках, потому что это не индексация, а псевдоиндексация какая-то.

Последнее время (а на самом деле уже достаточно давно) создаётся впечатление, что ресурсы Яндекса не справляются с обновлением индексной базы.
Выдача строится на основе списка сайтов, позиционный рейтинг которых считается по сайтам из разных кусков индекса - очень разной степени обновлённости. О какой вообще релевантности тогда может идти речь? Пользователь видит в титле и сниппете одно, идёт по ссылке - видит совсем другое. И на это накалываешься постоянно.

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

Но это ворчливая присказка. Основная тема статьи - морфологический поиск Яндекса.

Перлы морфологии Яндекса тут уже как-то были приведены (прошу прощения) - на подобное, кстати, мною уже давно было указано в ответ на феерический пост Амилющенко в Я.блог (жаль, что комментарии там скринятся).

Неужели у Яндекса нет профессиональных лингвистов, которые бы объяснили его специалистам что такое словоформа и морфологическая форма слова - что слова "метать" и "меч" не имеют общей морфологической формы - просто потому, что слово морфологический состоит из двух частей "морфо" и "логический"? Так нет же - как мы видим по приведённой цитате из блога Яндекса выше - его сотрудники вполне понимают то, что склейка, проведённая как "минуты - минут - миновать - минет", является следствием общих не морфологических форм, а следствием общих омоформ.

Так тогда и надо называть вещи своими именами: Яндекс имеет не морфологический поиск, а оморфический. В отличие от Гугля, кстати.

Меня как-то пытались убедить, что, мол, алгоритмически невозможно корректно построить морфологический поиск и отфильтровать из него оморфические результаты. Пример недавно введённой морфологии Гугля это, однако, опровергает. Но, возможно, сотрудникам Яндекса соответсвующие алгоритмы не под силу. Что ж, попробуем им помочь.

Допустим, есть слова А с морфоформами (А1, А2, А3, А4, В, А5...) и Б с морфоформами (Б1, Б2, Б3, В, Б5...) ,
имеющие общую омоформу В.

Как строит "морфологическую" выдачу Яндекс?
Пользователь набирает в запросе А2, а в результате, из-за омоформы В получает выдачу Б1, А1, Б2
и т.д..
Т.о. супер-пупер алгоритм морфологического поиска Яндекса скорее всего следующий:

1. получили запрос n=А2 ->
2. нашли все словоформы А2: А, А1, А2, А3, А4, В, А5... - сразу строится первичная выдача из 1..m результатов для каждой найденной словоформы согласно её весу, if (m=1000 или (m< 1000 и индекс исчерпан - см. пояснение к п.3.)) - then show results (аналогично же при построении выдачи для словосочетаний - см. ниже - всё то же, только для каждого слова в словосочетании) -> else ->
3. if m< 1000 (и индекс не исчерпан (тут - в п.2., м.б., как-то ещё задаётся норма для веса вхождения слов в выдачу)) - then для каждого А1, А2, А3, А4, В, А5... повторяем п.1. n=(А1, А2, А3, А4, В, А5...) -> п.2. ->
4. => для В получили Б, Б1, Б2, Б3, Б5 (итак, очевидно, что все омоформы найдены! :) ) -> п.2.=п.5. ->
5. теперь из А, А1, А2, А3, А4, В, А5..., Б, Б1, Б2, Б3, Б5... строим всю выдачу... enjoy!
(так же на п.5. получаем показываемый пользователю результат поиска страниц/сайтов - столько-то)

Закономерен недоумённый вопрос - зачем Яндекс делает п.3.?
Ответ неочевиден, но довольно прост.

Первая подсказка.
Как видно из примера выше (пример не слишком красив, но то же можно посмотреть и на "лучшие мечи" и т.п.)- если запрос состоит из двух и более слов, то Яндекс сначала выковыривает словоформы каждого слова запроса в отдельности, а потом ищет их вхождения, причём строит выдачу так, чтобы слова (точнее, уже их словоформы) в запросе стояли сначала максимально близко.

Вторая подсказка.
Если вы наберёте просто слово "минуты" - вы не получите в выдаче "минет". Аналогично с "мечи" не получите "метан", "метал" и т.п. (что, впрочем, неверно для Я.Маркета...).
А вот если вы наберёте уже запрос из двух слов ("отличные минуты", "лучшие мечи"), то получите результаты с омоформами.

Т.о. (см. первую подсказку) п.3. - является избыточным следствием алгоритма поиска вхождений для словосочетаний: почему? потому что поисковый движок не шибко умный и не знает, что имеет ввиду пользователь, задавая запрос "лучшие мечи" - то ли он ищет лучшие мечи, то ли он ищёт текст, где кто-то лучше мечет (икру, ага... - "мечи игру!"), то ли ищут какой-то ещё метан, который лучше... чужие души смысл запроса - загадка для робота.
Потому он и не органичивается п.2., который не отличает существительное "мечи" и глагольную форму "мечи" от "метать" - ведь движок не знает, где глагол, а где существительное, потому и ищет именно все омоформы и идёт в п.3..

Когда же запрос состоит из одного слова, вся выдача уже забита в п.2. найденными результатами и необходимости в п.3. нет. Как видите, я полагаю, что выдача Яндекса - это не более порядка 1000 результатов - Яндекс, как и Гугль, насколько могу судить по своим тестам, так же ограничивает выдачу числом в 1000 результатов - у Гугля это цифра официальная (не путать число найденных документов с числом пунктов списка выдачи результатов в браузер).

Итак, закономерно резюме (см. первую подсказку) - а не проще ли и правильнее сначала искать точные вхождения по словосочетанию (что, судя по всему, делает Гугль)?

Мои предположения, конечно, только предположения, а не претензия на знание сокровенных тайн :)
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 16 comments