Personal Video Database
Русский => Разработчикам => Тема начата: Reset от 16 Февраля 2009, 20:30:57
-
Nostra, расскажи, пожалуйста, по каким принципам происходит привязка связи, добавляемой к фильму, к собственно связываемому фильму.
В общем, насколько я знаю, по названию, оригинальному названию и году. Но интересую тонкости.
Каким образом происходит сравнение названий? Сравниваются только соостветствующие пары: название с названием, оригинальное название с оригинальным названием, год с годом? Или перекрестные сравнения тоже производятся: название с оригинальным названием, оригинальное название с названием?
Что происходит, если в фильме есть только одно название (собственно название или оригинальное название), а в связи - оба или другое? А если наоборот?
Каким образом происходит сравнение строк: побайтно безусловно, с учётом / без учёта регистра, без внимания на пробелы / с отбрасыванием конечных/начальных пробелов?
Может быть, ещё какие-нибудь нюансы.
Вопрос не праздный: меня интересует, на что надо обращать внимание разработчикам скриптов/плагинов при обновлении карточки фильма и добавлении связи? Возникают ситуации, когда скрипт пытается добавить связь на существующий фильм, но на существующий фильм она не добавляется, а создаётся новый фильм с таким же названием.
Самому разобраться не получается - нужны твои знания.
-
Всегда когда нужно определить есть ли фильм в базе производятся следующие действия:
1.
(Если указано ориг. название, то сравнить его с ориг. названиями и названиями
ИЛИ
Если указано название, то сравнить его с ориг. названиями и названиями)
И
Если указан год, то сравнить его с годом или год у имеющегося фильма должен быть не указан
2. Если по указанным выше критериям были найдены совпадения, то проверяются URL-ы, т.е. при совпадении домена первого уровня оставшаяся часть адреса должна тоже совпасть.
-
Всегда когда нужно определить есть ли фильм в базе производятся следующие действия:
1.
(Если указано ориг. название, то сравнить его с ориг. названиями и названиями
ИЛИ
Если указано название, то сравнить его с ориг. названиями и названиями)
И
Если указан год, то сравнить его с годом или год у имеющегося фильма должен быть не указан
2. Если по указанным выше критериям были найдены совпадения, то проверяются URL-ы, т.е. при совпадении домена первого уровня оставшаяся часть адреса должна тоже совпасть.
Я не случайно акцентировал внимание на пробелах или других нюансах, которые могут не учитываться при поиске фильма. Даю ссылку (http://newsky.maryno.net/share/pvd/video/test.mkv) на видео (4,5 Мб), которое снял NewSky (описание проблемы (http://www.videodb.info/forum_ru/index.php?topic=236.msg4862#msg4862)). Обрати внимание на то, что фильм "Кошмар на улице Вязов 3: Воины Сна", на который указывает ссылка, был создан намного позже, чем оригинальная карточка с фильмом, т.е. фильм с описанием уже существовал на момент добавления ссылки. Название, оригинальное название, год и URL новой карточки и старой совпадают с точностью до пробела. Но обращаю внимание, что в ссылке есть конечный пробел, а в названии фильма, IMHO, его нет. И хотя на синтетических тестах с добавлением фильмов с пробелами и без мне не удалось добиться их несвязываемости, но, видимо, что-то есть еще, что дает такой эффект. Вот посему и возник такой вопрос.
-
Сейчас гляну видео.
А по поводу сравнения, то забыл ещё сказать, что:
1. Перед сравнениями перемещаются/удаляются артикли в зависимости от настроек
2. Применяется настройка "все слова с большой буквы" если она включена
3. Убираются пробелы с обоих сторон
4. Сравниваются только 125 первых знаков
5. Сравнение зависит от регистра
-
Сейчас гляну видео.
А по поводу сравнения, то забыл ещё сказать, что:
1. Перед сравнениями перемещаются/удаляются артикли в зависимости от настроек
2. Применяется настройка "все слова с большой буквы" если она включена
3. Убираются пробелы с обоих сторон
4. Сравниваются только 125 первых знаков
5. Сравнение зависит от регистра
Ты упомянул про зависимость от регистра и я обратил внимание, что настройка "все слова с большой буквы" сама по себе не распространяется на связи.
Так же как и настройка перемещения префиксов.
Так же как и убирание пробелов в связях.
Ни в коем случае не утверждаю, что это не происходит перед сравнением, но может быть что-то из этого оказывает косвенное влияние на несвязываемость?
-
Распространяется, но только не на название ссылки которому по умолчание присваивается ориг. название без преобразований и которое потом и показывается в карточке фильма.
Я ещё пересмотрю код на предмет связей. Думаю, что найду причину.
-
А по поводу сравнения, то забыл ещё сказать, что:
...
3. Убираются пробелы с обоих сторон
...
Обрабатывается ли HTML-код как пробел? В особенности, в связях?
-
Плагины/Скрипты должны преобразовывать все коды такого рода и тэги HTML в текст.
-
Плагины/Скрипты должны преобразовывать все коды такого рода и тэги HTML в текст.
Ну тогда, вероятно, ошибка именно в этом.
Смущало только то, что эти коды в названия фильмов не попадали. Т.е. скрипт вносил название с этим кодом, а в карточке фильма даже пробела не было. А вот в связи именно пробел и был виден.
Попробуем потестить без таких кодов.
Спасибо за консультацию.
P.S. И все же я предлагаю накладывать на связи правила преобразования названий (перенос артиклей, удаление пробелов, все слова с большой буквы и др.) до добавления связи в карточку, чтобы в карточке название связи совпадало с названием фильма.
-
И все же я предлагаю накладывать на связи правила преобразования названий (перенос артиклей, удаление пробелов, все слова с большой буквы и др.) до добавления связи в карточку, чтобы в карточке название связи совпадало с назвнием фильма.
Так они и накладываются, но только на создаваемые фильмы в базе, а не названия ссылок (это разные вещи)...