Thanks for the quick feedback, Stefan! :) Just to clarify the one example you provided:

Also you plugin need to be a little bit smarter than just look for different values, since foo.com/cms.do?page=1 and foo.com/cms.do?page=2 are two different pages.

The filter would flag this only if _every_ link returned in the page that referred to foo.com contained "page=2". All you need is a single link to different page and the filter will let this page pass.

The only case I can really see this happening is if there was no navigation back at all (to the homepage, etc). In this case, it's likely a recursive trap anyway.

--Matt

On Mar 13, 2006, at 8:43 PM, Stefan Groschupf wrote:

Hi Matt,

sounds very interesting. Having a extension point until updating would be great since it would also allow to implement plugins dealing with identically pages but different meta data, since we have not the ability of meta data. So instead of design the api that we give a old and a new mapWritable we can process a crawlDatum from CrawlDb and a new one form the fetch process.

I see following problems:
Actually the url is used as key so you can not find a old and a new crawlDatum based on the url in case there are dynamically parameters. Also you plugin need to be a little bit smarter than just look for different values, since foo.com/cms.do?page=1 and foo.com/cms.do?page=2 are two different pages.

What I can imaging is using normalized urls to find identically pages. Store the parameters as meta data in the crawlDatum, have a plugin that is able to process the crawlDatum from crawlDb and the one from the segment until database update reducing.

Just my 2 cents.
Greetings,
Stefan

Am 14.03.2006 um 02:33 schrieb Matt Kangas:

Hi nutch-dev,

I know that we have RegexUrlNormalizer already for removing session-ids from URLs, but lately I've been wondering if there isn't a more general way to solve this, without relying on pre- built patterns.

I think I have an answer that will work. I haven't seen this approach published anywhere, so any failings are entirely my fault. ;) What I'm wondering is: - Does this seem like a good (effective, efficient) algorithm for catching session-id URLs?
- If so, where is the best place to implement it within Nutch?

Basic idea: session ids within URLs only cause problems for crawlers when they change. This typically occurs when a server- side session expires and a new id is issued. So, rather than looking for URL argument patterns (as RegexUrlNormalizer does), look for a value-transition pattern.

Algorithm:

1) Iterate over each page in a fetched segment

2) For each successful fetch, extract:
 - The fetched URL. Call this (u0)
- All links on the page that refer to the same site/domain. Call this set (u1..N)

3) Parse u0 into parameters (p0) as follows:
 - named parameters: add (key,value) to Map
 - positional (path) params: add (position,value) to Map

So for the url "http://foo.bar/spam/eggs?x=true&y=2";, pseudocode would look like:
 p0 = new HashMap();
 p0.put(new Integer(1), "spam");
 p0.put(new Integer(2), "eggs");
 p0.put("x", "true");
 p0.put("y", "2");

4) Parse u1..N into (p1..N) using the same method

5) Compare p0 with p1..N. Look for the following pattern:
 - keys that are present for all p0..N, and
 - values that are identical for all p1..N, and
 - the value in p0 is _different_

If you see this condition, flag the page as "contains session id that just changed" and deal with it accordingly. (Delete from crawldb, etc)

So... for anyone who's still reading ;), does this seem like it would work for catching session-ids? What corner-cases would trip it up? Can you think of cases when it would fall flat? And if it still seems worthwhile, where's the best place within Nutch to put it? (Perhaps a new ExtensionPoint that is used by "nutch updatedb"?)

--Matt

--
Matt Kangas / [EMAIL PROTECTED]




---------------------------------------------
blog: http://www.find23.org
company: http://www.media-style.com



--
Matt Kangas / [EMAIL PROTECTED]




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Nutch-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nutch-developers

Reply via email to