|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 18 Aug 2002 19:19:22 To : Maxim Chuvashov Subject : Re: NNTP -------------------------------------------------------------------------------- >>> Maxim Chuvashov wrote: MC> Есть задача получить список сообщений с какой-либо MC> группы новостей с NNTP сервера, и выстроить их в нужной MC> иерархиии. Получаем список, выдираем из заголовка Message-ID MC> и References. Все бы хорошо, если бы не одно но: MC> В некоторых случаях "корневое" сообщение имеет один Message-ID, MC> а в реплае на это же сообщение в "References" Message-ID немного MC> видоизменяется (это первая часть, которая стоит до "@". То что после - MC> остается неизменно). Как тогда определить какой реплай к MC> какому корневому сообщению относится? Hепонятно, что ты называешь корневым сообщением. В общем случае может быть несколько ситуаций: 1. Message-ID совпадает с Message-ID другого сообщения. Это не для ньюсов (там такое запрещено принципиально), но в почте - реально. 2. Первый с конца References совпадает с Message-ID другого сообщения. В этом случае первое сообщение считается ответом на второе. 3. Второй с конца References совпадает с Message-ID другого сообщения, при этом не найдено сообщение для пункта 2. Предполагается, что одно промежуточное сообщение отсутствует или же находится. N. И дальше - про третий с конца и так далее... У тебя в общем случае получается комплект пар сообщений, между которыми выстроено отношение частичного порядка. (Предполагаем, что циклов нет;)) Тогда можно методом топологической сортировки найти их очередность по раньше-позже в пределах каждой ветки общения и затем собрать ветки начиная от корней; корнем в каждом случае будет первое сообщение из ветки. Процедура дешевая (O(N)). Если непонятны термины "частичный порядок", "топологическая сортировка" - вперед на google или к преподавателю алгебры (или матанализа). MC> Если даже сравнивать то, что стоит после "@" + на соответствие MC> по темам - все равно не получим 100% правильный результат, т.к. MC> некоторые хорошие люди имеют привычку при ответах менять тему :) MC> Как быть, может кто-нибудь сталкивался? Ты, похоже, описываешь проблемы, созданные гейтами RFC<->FTN. После гейтования в FTN message-id приобретает вид "узел число", где "узел" обычно берется как доменная часть message-id до гейтования, а "число" считается гейтом. В ^AREPLY ответа на это письмо идет тот же id. После прохождения гейта обратно на сторону RFC (NNTP или что-то близкое) гейт может восстановить исходный id, если он умный; если глупый - получается артефакт вида <98765432@nn.kiev.ua>, после которого ветки могут рассыпаться и рваться. Все это скорее тема для ru.unix.ftn или ru.internet.technology, чем для здесь. /netch --- ifmail v.2.15dev5 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/736847716b91.html, оценка из 5, голосов 10
|