Послано - 26 Ноябр 2004 : 00:30:36
За прочими заботами мы как-то пропустили тот факт, что у одного из нас Читательский Профиль превысил 1000 произведений! АММ, я тебя поздравляю!!! Так держать!
Это событие по меньшей мере знаковое для всего проекта. Где-то тут рядом я уже писал о 600 книгах в Профилях - и не более... Оказалось, я был более чем скромен...
В итоге на сегодняшний день у нас есть определённое количество Хранителей с Профилями из нескольких сот произведений. Вершина списка выглядит так:
Однако такое явление массовости порождает новые проблемы. О них-то я и хочу поговорить:
1. Пустые строки в профилях. Мы пока ещё не можем удалить из профиля однажды занесённое туда произведение. И даже если мы занесли его в профиль абсолютно верно (а ведь бывают и ошибки!) - нет гарантии, что оно со временем не превратится в пустую строку. Причин тому может быть несколько, но самая главная из них - удаление запараллеленной книжки из базы. Обычно библиотекари удаляют ту из двух по-разному названных ипостасей одной книжки, которая имеет меньше оценок в профилях - но не исключено, что она будет как раз в вашем профиле...
2. Невозможность использования механизма "Что почитать" Слишком сложен стал алгоритм расчёта - и если раньше ощибка сервера выдавалась через раз, то сейчас мы видим постоянно: ------------------------------- ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/showtext.asp, line 36 ------------------------------- (Может быть, это видят все, а может - только владельцы крупных профилей...) В любом случае, с этим надо что-то делать...
3. Нет возможности оффлайного вывода/заполнения/редактирования профиля - а это создает главную проблему для заполнения профиля тем, у кого медленный либо ограниченный интернет...
Есть ли у кого мысли и предложения по всем этим вопросам?
Цитата:самая главная из них - удаление запараллеленной книжки из базы. Обычно библиотекари удаляют ту из двух по-разному названных ипостасей одной книжки, которая имеет меньше оценок в профилях
Для подобных случаев обычно применяется алгоритм замещения/объединения уникальных кодов (в данном случае - уникального кода произведения). Алгоритм заключается в следующем: 1) Ищутся ссылки на замещаемое/удаляемое произведение во всех таблицах базы данных (в частности - в таблице, отвечающей за профиль) и замещаются на ссылки запараллеленной книжки. 2) Удаляется (или переводится в разряд неактивных, если это возможно) замещаемое произведение. Да, алгоритм может работать корректно, если только, ссылки на произведение действительно уникальны.
Послано - 26 Ноябр 2004 : 11:33:24
Появлявшаяся ошибка в механизме "Что почитать?" - это не проблема больших профилей, а именно ошибка в коде, которая возникла из-за некоторых модернизаций на сайте. Сейчас она исправлена, подбором рекомендаций можно пользоваться!
Разве? У меня она вылезает и сейчас. Правда не всегда. Я сейчас погонял немного программку: похоже, что ошибка лезет, если список предложенных произведений превышает 220-250 штук.
Текст ошибки:
Цитата:Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '101+182+222' to a column of data type int.
Послано - 30 Янв 2008 : 23:32:24
НЕ РАБОТАЕТ!!! =================== # Минимальное количество общих прочитанных произведений: 50 # Совпадение оценок произведений (нижняя граница в %): 82 # Критерий оценки: общее впечатл # Фильтр по темам: все # Фильтр по объему: роман ================= Microsoft OLE DB Provider for ODBC Drivers error '80040e31'
[Microsoft][ODBC SQL Server Driver]Timeout expired
Послано - 31 Янв 2008 : 18:02:25
Ну да, не работает... А когда он работал в последний раз? Насколько я понимаю, проблема на стороне хостера. Это cамое "timeout expired" появляется постоянно просто потому, что сервер хостера не в силах справиться с одновременно возложенными на него задачами. Аминь.
Впрочем, иногда рандомно (обычно в часы малой активности русского сегмента сети) оно всё же работает...
Поправьте меня, если я не прав.
upd: А что нам мешает написать а) программный модуль оффлайн-заполнения профиля б) программный модуль получения рекомендаций оффлайн? Имхо, это единственный способ хоть как-то обойти ограничение работоспособности сервера хостера.
Впрочем, чего это я... Я это ещё в 2004-м в первый раз предлагал )))
Послано - 31 Янв 2008 : 18:48:32
Вчера, дома поигрался немного с профилем. 36 внесенных книг - 5 книг совпадение, жанр - космическая, работает. 60-70 внесенных книг - "timeout expired" каждый раз.
Сегодня, книг столько же, совпадения 10-30 книг, форма роман, разные жанры - периодически отваливается.
Из-под Mozilla Firefox не могу занести книги в игнор.
Цитата:Насколько я понимаю, проблема на стороне хостера. Это cамое "timeout expired" появляется постоянно просто потому, что сервер хостера не в силах справиться с одновременно возложенными на него задачами. Аминь. Впрочем, иногда рандомно (обычно в часы малой активности русского сегмента сети) оно всё же работает...
Скорее просто сервер не справляется. Зато когда народу нет никого - он тебе больше внимание уделить может.
А вообще мысли такие.
1. Сделать быстрый фикс - повысить этот самый "timeout expired". Решение временное и ненадёжное, просто чтобы хоть как-то всё работало. 2.1 Оптимизировать запросы в бд, выполняемые во время расчета рекомендаций. 2.2 Индексация результатов расчёта. Алексей обьяснил, что сейчас при каждом расчете результаты предыдущих расчетов никак не учитываются. 3. Модернизация сервера.
В идеале - всё сразу. Минус только один - на 3тий пункт нужны деньги, на 2-ой свободное время программистов, а по сути те же деньги.
Послано - 31 Янв 2008 : 19:06:54
SeaJey, угу, мы всё это уже проходили в 2004-м, 2005-м и 2006-м последовательно.
Только что поигрался с профилем. Мой профиль - около 800 произведений. Количество общих прочитанных книг - 30 Минимальный процент совпадений - 90 Остальное - по умолчанию. Эти параметры - те, которые мне выдают для рекомендаций одного-единственного (!)пользователя, который мне может рекомендовать книги! Так вот, при попытке получить рекомендации от этого единственного пользователя - вящая ошибка timeout expired. Ужесточить условия я не могу - мне просто некому будет книги рекомендовать.
Резюме: читательский профиль в виде, существующем последние 4 года, лично для меня оказался полностью бесполезен с момента "забивания" туда 300 тайтлов. (именно тогда он перестал мне хоть что-то рекомендовать) Сейчас же, как говорит SeaJey, граница "бесполезности" существенно снизилась - до 50-60 книг.
Цитата:Сейчас же, как говорит SeaJey, граница "бесполезности" существенно снизилась - до 50-60 книг.
Нет, я пока до лимита не дошёл - 126 книг в профиле, 30 тайтлов, 80 % по научной фантастике - выдал две страницы рекомендаций. Andrew, попробуй с более жесткими фильтрами поиграться.
Но вообще, тему не зря подняли - нужно собрать как можно больше багов и фичареквестов перед тем, как браться за профиль всерьёз.
По субъективным впечатлениям инсайдера - это будет месяца через два.
Опять же, по инсайдерской информации, в ближайших планах подписка на тему без оставления поста, исправления работы кнопок-тэгов под всеми основными браузерами.
Цитата:Andrew, попробуй с более жесткими фильтрами поиграться.
Куда ж ещё жёстче-то, а? Я ж говорю - при параметрах 30 на 90 мне может дать совет "Что почитать" один-единственный владелец профиля! И всё равно time expired... Если я их (эти условия) ещё ужесточу - то вообще никого не останется! ))) Тут дело на самом деле не в параметрах - дело в общих размерах сравниваемых профилей. Мой - не самый, но один из самых громоздких. Сравнить два-три небольших профиля - и получить рекомендации легко, но даже если тебе в рекомендатели попадает один из объёмных профилей - то сразу заметно торможение... А если и у тебя самого объёмный профиль - и ты ищешь рекомендаций - то дело вообще хреново. Даже "читать-не читать" (кнопка с весами) - и то часто ошибку выдаёт... Поверь мне, я за эти годы уже наигрался с фильтрами всласть... ;-)
20 общих - скрипт отработал, но совпадений нет 15 общих - скрипт честно отработал, дал результаты 10 общих - скрипт честно отработал, дал результаты 5 общих - скрипт отработал, но сдох: Microsoft OLE DB Provider for ODBC Drivers error '80040e31'
[Microsoft][ODBC SQL Server Driver]Timeout expired
Послано - 17 Апр 2008 : 18:21:19
830 произведений в профиле. 80% совпадений 10 общих книг
Первую страницу отработал правильно - показал и перечень экспертов-Хранителей, и рекомендуемые произведения. На второй странице уже споткнулся - произведения показать не смог. Обновления не помогают (он что там, для каждой страницы рекомендация заново всё рассчитывает?!)
В целом картина ясна. Функциональность улучшилась, но недостаточно для нормальной работы.