Windows下調用nutch的指令碼,可實現自動運行

來源:互聯網
上載者:User
現在正對搜尋引擎有興趣,
我的搜尋基於nutch,並結合了ICTCLAS,分詞和速度都不錯。
這樣做可以不用crywin來類比linux
下面是在win nt下調用nutch的指令碼,
你可以自己改一下,這樣就可以很方便的實現自動運行了。
有興趣的朋友可以用一下,大大方便了操作。

nutch.bat
@cmd /V:on /c %~dp0nutch1.bat %*

nutch1.bat
@echo on
rem *********************************************************************rem * A script to launch nutch on Windows 2000/XP System.
rem *
rem * Written by babatu
rem * babatu@gmail.com blog: blog.babatu.com
rem *
rem * Because delayed environment is used, cmd /V:on should be used to
rem * run this script.
rem *****************************************************************
if "%OS%"=="Windows_NT" @setlocal
if "%OS%"=="WINNT" @setlocal

if "%1" == "" goto :msg
goto :begin
:msg
echo "Usage: nutch COMMAND"
 echo "where COMMAND is one of:"
 echo "  crawl             one-step crawler for intranets"
 echo "  readdb            read / dump crawl db"
 echo "  readlinkdb        read / dump link db"
 echo "  inject            inject new urls into the database"
 echo "  generate          generate new segments to fetch"
 echo "  fetch             fetch a segment's pages"
 echo "  parse             parse a segment's pages"
 echo "  segread           read / dump segment data"
 echo "  updatedb          update crawl db from segments after fetching"
 echo "  invertlinks       create a linkdb from parsed segments"
 echo "  index             run the indexer on parsed segments and linkdb"
 echo "  merge             merge several segment indexes"
 echo "  dedup             remove duplicates from a set of segment indexes"
 echo "  plugin            load a plugin and run one of its classes main()"
 echo "  server            run a search server"
 echo " or"
 echo "  CLASSNAME         run the class named CLASSNAME"
 echo "Most commands print help when invoked w/o parameters."
pause
goto :end

:begin
rem %~dp0 這個指令碼的擴充path   ( expanded pathname of the current script under NT)
set DEFAULT_NUTCH_HOME=%~dp0..
rem set DEFAULT_NUTCH_HOME=..

if "%NUTCH_HOME%"=="" set NUTCH_HOME=%DEFAULT_NUTCH_HOME%
set DEFAULT_NUTCH_HOME=""
rem 設定預設DEFAULT_NUTCH_HOME

echo %NUTCH_HOME%

rem set _USE_CLASSPATH=yes

if "%CLASSPATH%"=="" ( set CLASSPATH=%JAVA_HOME%/lib/tools.jar) ELSE set
CLASSPATH=%CLASSPATH%;%JAVA_HOME%/lib/tools.jar
set CLASSPATH=%CLASSPATH%;%NUTCH_HOME%/conf;
echo %CLASSPATH%
echo before other

rem for developers, add plugins, job & test code to CLASSPATH
if exist %NUTCH_HOME%/build/plugins set
CLASSPATH=%CLASSPATH%;%NUTCH_HOME%/build

for /R %NUTCH_HOME%/build %%i in (nutch*.job) do set
CLASSPATH=!CLASSPATH!;%%i
if exist %NUTCH_HOME%/build/test/classes set
CLASSPATH=%CLASSPATH%;%NUTCH_HOME%/build/test/classes

rem for releases, add Nutch job to CLASSPATH
for /R %NUTCH_HOME% %%i in (nutch*.job) do set CLASSPATH=!CLASSPATH!;%%i
rem add plugins to classpath
if exist %NUTCH_HOME%/plugins set CLASSPATH=%CLASSPATH%;%NUTCH_HOME%
rem add libs to CLASSPATH
for /R %NUTCH_HOME%/lib %%f in (*.jar) do set CLASSPATH=!CLASSPATH!;%%f

echo %CLASSPATH%

rem translate command
if "%1"=="crawl" set CLASS=org.apache.nutch.crawl.Crawl
if "%1"=="inject" set   CLASS=org.apache.nutch.crawl.Injector
if "%1"=="generate" set   CLASS=org.apache.nutch.crawl.Generator
if "%1"=="fetch" set   CLASS=org.apache.nutch.fetcher.Fetcher
if "%1"=="parse" set   CLASS=org.apache.nutch.parse.ParseSegment
if "%1"=="readdb" set   CLASS=org.apache.nutch.crawl.CrawlDbReader
if "%1"=="readlinkdb" set   CLASS=org.apache.nutch.crawl.LinkDbReader
if "%1"=="segread" set   CLASS=org.apache.nutch.segment.SegmentReader
if "%1"=="updatedb" set   CLASS=org.apache.nutch.crawl.CrawlDb
if "%1"=="invertlinks" set   CLASS=org.apache.nutch.crawl.LinkDb
if "%1"=="index" set   CLASS=org.apache.nutch.indexer.Indexer
if "%1"=="dedup" set   CLASS=org.apache.nutch.indexer.DeleteDuplicates
if "%1"=="merge" set   CLASS=org.apache.nutch.indexer.IndexMerger
if "%1"=="plugin" set   CLASS=org.apache.nutch.plugin.PluginRepository
if "%1"=="server" set CLASS='
org.apache.nutch.searcher.DistributedSearch$Server'
if "%CLASS%"=="" set CLASS=%1

%JAVA_HOME%/bin/java -cp %CLASSPATH% %CLASS% %*

if "%OS%"=="Windows_NT" @endlocal
if "%OS%"=="WINNT" @endlocal

:end

 

   搜尋不是目的,能夠實現搜尋那是非常容易的事情,隨便下載一個ASP或者其它的搜尋源碼就可以輕鬆實現,有四個關鍵,1。不要說億了,資料達到1000萬時,你的搜尋速度是多少
2。你的搜尋引擎是不是可以發現最新的流行詞語。
3。網頁如何分類,如何明確使用者的本意,或者接近。
4。內容的廣泛度和專業度,能不能達到,怎麼平衡。本人只是拋磚引玉,讓大家見笑了。 

    由於NUTCH是apache的一個開源項目,所以它的效能是不錯的。
現在我所做的就是:
1。發現在新詞:
發現最新的流行詞語,可以對使用者的搜尋字詞進行識別,對於詞典中沒有,它會把它當作單字來處理,這時,對一段時間內出現頻率高的單字組合,設定一個閾值,把它識別出來,加到一個臨時詞典中,等更長時間的識別後,就把它加入詞典中。
2。 網頁如何分類,如何明確使用者的本意,或者接近。
nutch是第二代的搜尋引擎,全文索引,好像google baidu等對網頁也是不分類的,所以基於它,並不實現網頁的分類。如果要向這個方向擴充,現在好像比較好的方法是對網頁中一定數量(權重最大)的關鍵字(詞)用訓練集的辦法,把它們和與事先人工分類的樣本進行對比,可以有很高的識別率。

4。內容的廣泛度和專業度,能不能達到,怎麼平衡
廣泛度在nutch 中好像就得不斷抓取更多的網頁來保證了。在一個趨近現時中實際的網頁的索引庫中,廣泛度可以保證,但這是基於有效查詢的基礎上。就像是google,你的搜尋字詞不好也不可能返回你想要的結果。專業度,一是要在良好的分詞,索引前提下,二是要廣泛的索引庫中了。其實專業度的更需要的(就如你所說的)是網頁的分類。在分類前提下,專業度更易保證。
在沒有分類的情況下,在抓取網頁後,對其進行儘可能正確的分詞(同時在使用者搜尋時),這是最大的技術痛點了吧。因為中文的特殊性,其難度很大。我在nutch中結合中科院的ICTCLAS就是這個目的。
以上也只是我的個人感受,請指教。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.