Well this is the tutorial that I use: To build and run the demo, follow the instructions below, which are written for Unix-like operating systems:
1. Obtain a copy of the Mahout distribution, either from SVN or as a downloaded archive. 2. Download the "1 Million MovieLens Dataset" from http://www.grouplens.org/. 3. Unpack the archive and copy movies.dat and ratings.dat to trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/grouplens under the Mahout distribution directory. 4. Navigate to the directory where you unpacked the Mahout distribution, and navigate totrunk. 5. Runmvn install, which builds and installs Mahout core to your local repository 6. cd taste-web 7. cp ../examples/target/grouplens.jar ./lib 8. Edit recommender.properties and fill in therecommender.class: recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender 9. mvn package 10. mvn jetty:run-war. You may need to give Maven more memory: in a bash shell, export MAVEN_OPTS=-Xmx1024M 11. Get recommendations by accessing the web application in your browser: http://localhost:8080/RecommenderServlet?userID=1 This will produce a simple preference-item ID list which could be consumed by a client application. Get more useful human-readable output with the debug parameter: http://localhost:8080/RecommenderServlet?userID=1&debug=true Incidentally, Taste's web service interface may then be found at: http://localhost:8080/RecommenderService.jws Its WSDL file will be here... http://localhost:8080/RecommenderService.jws?wsdl ... and you can even access it in your browser via a simple HTTP request: .../RecommenderService.jws?method=recommend&userID=1&howMany=10 Note: the exact URL where the service is deployed depends on how you deployed the application in your app server. For instance if you deployed it as a .war file called 'mahout-taste-webapp.war', it will deploy at a URI whose path begins with /mahout-taste-webapp/ instead. So I downloaded Mahout from this link: http://www.apache.org/dyn/closer.cgi/lucene/mahout/ as you can see there are 3+2 folders (0.1, 0.2, 0.3) and (mahout-collection-codegen-plugin-1.0, mahout-collections-1.0), I assume that (0.1, 0.2, 0.3) refer to different versions of Mahout so I decided to use the 0.3 assuming that it is the newest one. passing to the 3rd step, no path like this exist I fond a zip file inside the 0.3 folder called mahout-0.3-src.zip, on extracting it I get a folder called mahout-0.3 inside which I can find the path stated in 3 but without the trunk folder (ie, taste-web/src/main/resources/org/apache/mahout/cf/taste/example/grouplens). by consequence the step 4 looks incomprehensible for me, so I went to the folder mahout-0.3 which seems to me the replacer of "trunk". after that step 5 was done successfully. for step 7 I did not find the folder target in the folder examples, in addition I tried to search for the file grouplens.jar but could not find it. step 8 I did not need to edit the file recommender.properties because the value was already the same as described in this step step 9 was done successfully too in step 10 I received the next error 2010-06-11 15:03:59.119:INFO::jetty-8.0.0.M0 2010-06-11 15:03:59.194:INFO::Extract jar:file:/home/alchiekc/mahout/0.3/mahout-0.3/taste-web/target/mahout-taste-webapp-0.3.war!/ to /home/alchiekc/mahout/0.3/mahout-0.3/taste-web/target/mahout-taste-webapp-0.3 2010-06-11 15:04:01.078:INFO::No Transaction manager found - if your webapp requires one, please configure one. 2010-06-11 15:04:01.159:INFO::No annotation on initializer class org.apache.jasper.runtime.TldScanner 2010-06-11 15:04:03.920:WARN:/:unavailable org.apache.mahout.cf.taste.common.TasteException: java.lang.ClassNotFoundException: ${recommender.class} at org.apache.mahout.cf.taste.web.RecommenderSingleton.<init>(RecommenderSingleton.java:53) at org.apache.mahout.cf.taste.web.RecommenderSingleton.initializeIfNeeded(RecommenderSingleton.java:42) at org.apache.mahout.cf.taste.web.RecommenderServlet.init(RecommenderServlet.java:74) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:442) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:270) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:268) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:978) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:608) at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:155) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:349) at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:102) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165) at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:162) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92) at org.eclipse.jetty.server.Server.doStart(Server.java:231) at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:69) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:433) at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:377) at org.mortbay.jetty.plugin.JettyRunWarMojo.execute(JettyRunWarMojo.java:68) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:512) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:482) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129) at org.apache.maven.cli.MavenCli.main(MavenCli.java:287) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 2010-06-11 15:04:03.978:INFO::Started selectchannelconnec...@0.0.0.0:8080 so is this clear enough for you? -- View this message in context: http://lucene.472066.n3.nabble.com/Installing-Mahout-tp870701p888477.html Sent from the Mahout User List mailing list archive at Nabble.com.