Windows下调用nutch的脚本,可实现自动运行

现在正对搜索引擎有兴趣,
我的搜索基于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"
<script type="text/javascript"> </script> 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
<script type="text/javascript"> </script>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.Injecto r
if "%1"=="generate" set   CLASS=org.apache.nutch.crawl.Generat or
if "%1"=="fetch" set   CLASS=org.apache.nutch.fetcher .Fetcher
if "%1"=="parse" set   CLASS=org.apache.nutch.parse.ParseSe gment
if "%1"=="readdb" set   CLASS=org.apache.nutch.crawl.CrawlDb Reader
if "%1"=="readlinkdb" set   CLASS=org.apache.nutch.crawl.LinkDbR eader
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 <script type="text/javascript"> </script>.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就是这个目的。
以上也只是我的个人感受,请指教。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值