Ozon XML

12
malls
На сайте с 08.08.2005
Offline
255
2657

Качнул XML каталог книг. 400Мб не для слабонервных конечно, ну да ладно - хотел разобраться.

Что Выходит:

Предположим хотим сделать выборку книг одного автора. Что делаем теоретически Зная ID автора - получаем книги соответствующие этому ID, но вот незадача, возьмем например Лермонтова:


<category id="1088304" parentId="1071374">Лермонтов, Михаил</category>
<category id="1071354" parentId="1000360">Лермонтов, Михаил</category>
<category id="1088649" parentId="1085248">Лермонтов, Михаил</category>
<category id="1093664" parentId="1093654">Лермонтов, Михаил</category>
<category id="1091126" parentId="1085070">Лермонтов М. Ю.</category>
<category id="1085109" parentId="1085104">Лермонтов Михаил</category>
<category id="1088427" parentId="1085202">Лермонтов Михаил</category>
<category id="1107001" parentId="1106508">Лермонтов М. Ю.</category>

Т.е. одному автору соответсвует несколько ID - бред? Как быть в такой ситуации?

Тем более что, как я подозреваю, однозначно зашить к себе в базу соответствия IDs-АВТОР нельзя, т.к. кол-во ID ему соответствующих может увеличиться в любой момент. Поиск по фамилии автора ничего не дает т.к. мы уже видим несколько вариантов:

Лермонтов, Михаил

Лермонтов М. Ю.

Лермонтов Михаил

В данном случае выбирать ID по фамилии возможно, но если фамилия например Петров, то однозначного соответствия провести нельзя.

Вопрос - как работать с таким каталогом?

Примитивный пример, есть автор, нужно выбрать все его книги - какие варианты?

stealthy
На сайте с 15.06.2006
Offline
69
#1

А никак. Когда у нас в Актисе делали www.24x7.ru (один из первых руинетмагов по книгам) столкнулись с тем, что даже одна и та же книга у разных поставщиков может быть поименована десятью способами. Типа "Лермонтов, Пушкин, Толстой" или "Лермонтов и др." и пр.

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

Twilight CMS (http://www.twl.ru): есть Free версия, очень проста и удобна в использовании. Консультирую по любым вопросам. Новый спорт - практическая стрельба (http://nikit.in) - не для офисного планктона.
malls
На сайте с 08.08.2005
Offline
255
#2

Дело в том что число собственно авторов конечно. Т.е. поэтов например в России можно насчитать штук 800 (включая совсем неизвестных может быть тысячу). С писателями примерно такая же ситуация. Сл-но сама идея делать выборки исключительно по писателям неплоха. В пределах того же Озона каждой книге ручками прописываются соответствия "автор-ID" плохо то что дополнительно плодят лишние ID-шники... Вот и хочется понять как с этим бороться.

0
На сайте с 19.09.2007
Offline
55
#3

Почему бы не воспользоваться регулярными выражениями, и не получить все айдишники, строка имени которых начинается с (или просто содержит) "Лермонтов"?

codemorgan
На сайте с 12.01.2009
Offline
48
#4

А можно просто заюзать XQuery.

Верстка/PHP/Wordpress/Magento (http://codemorgan.ru/services)
malls
На сайте с 08.08.2005
Offline
255
#5
0verdrive:
Почему бы не воспользоваться регулярными выражениями, и не получить все айдишники, строка имени которых начинается с (или просто содержит) "Лермонтов"?

Потому что если автора зовут "Петров" или "Толстой" то возникает проблема ошибочных выборок.

0
На сайте с 19.09.2007
Offline
55
#6

Тогда прогонять содержимое тега через три паттерна.

Один проверяет фамилию.

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

Программная реализация такой проверки не составит особого труда.

В любом случае, имя либо будет прописано полностью, либо будет обозначено инициалом. Разве нет так, и есть ещё варианты формата написания?

malls
На сайте с 08.08.2005
Offline
255
#7
0verdrive:
Тогда прогонять содержимое тега через три паттерна.
Один проверяет фамилию.
Два других - имя (полное вхождение, и как первую букву имени с точкой в конце).
Программная реализация такой проверки не составит особого труда.

В любом случае, имя либо будет прописано полностью, либо будет обозначено инициалом. Разве нет так, и есть ещё варианты формата написания?

Да то что "конструкций" можно нагородить - это понятно, только это не решает проблемы.

Встречаются ведь и перлы вроде:

Соловьёв, Сергей Михайлович — (1820-1879), русский историк.

Соловьёв, Сергей Михайлович — (1885-1942), русский поэт.

оба немало понаписали, а мне надо только одного из них выбрать - напр. историка.

Сумеете склепать регулярку для этого случая - можете считать что "памятник нерукотворный ..." Пушкин про Вас написал. :)

Хотелось бы услышать представителя Озона - вдруг у них отдельно есть таблица соответствий...

А он филонит... :) Хотя был на сайте: 13.01.2009 в 10:23. Тему наверняка видел.

OR
На сайте с 12.03.2008
Offline
123
#8

Мы со своей стороны боремся с такими дублями авторов. Но, к сожалению, ассортимент настолько огромен, что быстро переименовать все созданные когда-либо карточки товаров - не представляется возможным.

Служба поддержки партнерской программы OZON.ru (http://www.ozon.ru/context/partner/) Регистрация партнера (http://www.ozon.ru/?context=partner_join), Обратная связь (http://www.ozon.ru/context/partner_feedback/)
malls
На сайте с 08.08.2005
Offline
255
#9
OZON.ru:
Мы со своей стороны боремся с такими дублями авторов. Но, к сожалению, ассортимент настолько огромен, что быстро переименовать все созданные когда-либо карточки товаров - не представляется возможным.

Уже веселее - тогда вопрос - это означает что больше такие ID плодится не будут? Т.е. как максимум будут использоваться только те которые уже есть в базе и соответственно однократное составление базового списка из существующих ID решает проблему? Или не так?

OR
На сайте с 12.03.2008
Offline
123
#10

2 malls

При прилагаем для этого все усилия. Такие дубли появляются, к сожалению, благодаря человеческому фактору. Исключать подобные случаи нельзя, но надеюсь "благодаря" воздействию на административном уровне они сведутся к минимуму.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий