Java堂  


Apache+Resin下如何写伪静态和301跳转

Filed under: SearchEngine,Web&Server — Jet @ 7:19 下午
Tags: , ,
原文出处: Apache+Resin下如何写伪静态和301跳转
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

目前网上大多数资料都是介绍如何在Apache中设置伪静态的,在Resin中很少提及,经过实践实现了这一点,现在做如下总结。

1. Apache下如何写伪静态和301重定向
直接上代码(以本站域名为例):

  1. <IfModule mod_rewrite.c>
  2.     RewriteEngine On
  3.     # 叹号表示非,L表示最终结果,不再循环;NC是不区分大小写。
  4.     RewriteCond %{http_host} !^www.javatang.com [NC]
  5.     RewriteRule ^/(.*)$ http://www.javatang.com/$1 [R=301,NC,L]
  6.     RewriteRule ^(.*)/index(.*)$ $1/index.html [R=301,NC]
  7.   </IfModule>

2. Resin下如何写伪静态和301重定向
Resin下的重定向也是由伪静态来写的,不过具体一些的话他同页面伪静态是分别由两个tag来完成的,页面伪静态由forward完成,301永久重定向由moved-permanently完成。

下面是具体的代码:

  1. <rewrite-dispatch>
  2.         <forward regexp="^(.*)/archives/([^/]+)/([^/]+).html$" target="$1/archives.jsp?q=$3&amp;a=$2" />
  3.         <!-- HTTP 301 moved -->
  4.         <moved-permanently regexp="^(.*)/index(.*)$" target="$1/index.html"/>
  5.     </rewrite-dispatch>

这里需要特别注意的一点就是地址中的QueryString中&连接符需要使用&来代替,否则为出现错误。

因为JavaEE默认的web.xml文件不支持上述属性,所以可以在你的站点WEB-INF目录下创建一个resin-web.xml文件,这个文件会被Resin看作为站点配置文件,然后在文件中写下如下内容:

  1. <web-app xmlns="http://caucho.com/ns/resin"
  2.          xmlns:resin="http://caucho.com/ns/resin/core">
  3.     <rewrite-dispatch>
  4.         <forward regexp="^(.*)/archives/([^/]+)/([^/]+).html$" target="$1/archives.jsp?q=$3&amp;a=$2" />
  5.         <!-- HTTP 301 moved -->
  6.         <moved-permanently regexp="^(.*)/index(.*)$" target="$1/index.html"/>
  7.     </rewrite-dispatch>
  8. </web-app>

3. Apache+Resin组合的时候设置伪静态需要注意的地方

二者组合中Resin主要完成Servlet所映射的地址为文件类型,而Apache完成其余部分,因此关于页面伪静态部分需要在Resin和Apache中同时设置才有效,否则有时候会出现404错误。但对于301永久重定向来说,如果是涉及域名部分的只需要在Apache中设置即可,如果二者都设置的时候会出现域名解析错误;如果涉及到页面部分的话需要在二者中都设置。

关于Resin如何同Apache组合请看这篇文章 Resin 3.0.x 经验总结

关于Resin+Apache下如何设置泛域名请看这篇文章 Apache+Resin泛域名的设置

参考资料:
Resin url rewrite tags
Apache网站301永久重定向设置

Lucene创建索引时出现的segments或deletable拒绝访问异常的原因

Filed under: JavaPlateform,SearchEngine — Jet @ 10:54 下午
Tags:
原文出处: Lucene创建索引时出现的segments或deletable拒绝访问异常的原因
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

今天在使用Lucene生成索引的时候,总是在索引的过程中出现下面的异常信息:

java.io.IOException: Cannot rename …\segments.new to …\segments
……


java.io.IOException: Cannot rename …\deletable.new to …\deletable
……

逐一检查了代码、系统目录权限等方面均没有发现问题的所在。后来Google了一下,终于知道原因在杀毒软件的病毒防火墙上面。因为Lucene在生成索引的过程中频繁的创建合并文件,这样病毒防火墙不断地进行监测分析,这个时候就会锁定某个文件,造成Lucene无法进行操作。貌似卡巴斯基的这个问题最严重,呵呵

另外如果关闭病毒防火墙之后依然出现上述异常的话就设置每500条数据就使用optimize()方法对索引优化一次;如果依然出现问题的话那应该更新你的Lucene和lucene analyzers包,因为Lucene2.0有这个bug。我将两个包都更新到最新的2.1版本(2007.4.17)之后运行程序一直没有出现上面的异常提示。

最后总结一下解决的方法,逐一按照一下步骤进行操作:

1) 关闭病毒防火墙;
2) 每500条数据就使用optimize()方法对索引优化依次;
3) 更新Lucene和Analyzers为2.1版本。

参考资料:
Lucene 的一个错误 和一个文件太多
各类读者问题汇总

Lucene中文分词 “庖丁解牛”

Filed under: JavaPlateform,SearchEngine — Jet @ 3:56 下午
Tags: ,
原文出处: Lucene中文分词 “庖丁解牛”
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

一位网名为Qieqie的网友在JaveEye上发布了自己写的Lucene中文分词包-庖丁解牛。

高效率:我的赛扬PC 1 秒解析 >>> 20000汉字的词语 (实际测试结果数据,可达1秒10万+汉字。)
高可维护性:使用“庖丁”隐喻,形象明晰
高灵活性,可扩展:OOD

主要发布文件如下:

Paoding.rar
中文分词“庖丁解牛”,面向对象,高效率,高扩展性

HashBinaryDictionary.java.rar
原来的HashBinaryDictionary.java使用对第一个字符hash+二份查找。这个算法已经不错。但下面的更新使用了更好的策略。可连续hash词语的字符。理论上这个词典算法应该到达极致了。覆盖HashBinaryDictionary.java在com/sohospace/dictionary下

Main1.java.rar
对一个长度2185856的字符串(4,347,520字节)的分词效率测试。 下载解压后添加到源文件中

Lucene发布2.1版本

Filed under: JavaPlateform,SearchEngine — Jet @ 3:26 下午
Tags:
原文出处: Lucene发布2.1版本
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

近日发现Lucene发布了最新的2.1版本,发布日期为2007年2月17日(春节前一天:))。由官方上公布的新闻中了解到这次更新最大的改变就是索引的格式发生了修改,新的索引格式2.1版本之前的Lucene无法进行读取,但是新版本的Lucene可以读取原来旧的索引文件。

这里是一份完整的更新列表文件。

一个非常不错的 Spider 程序 – weblech

Filed under: JavaPlateform,SearchEngine — Jet @ 3:03 上午
Tags: ,
原文出处: 一个非常不错的 Spider 程序 – weblech
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

weblech是一个使用 Java 实现的 Spider 程序,简单明了,是研究 Spider 程序原理和 Java 实现一个非常好的项目。官方地址:http://weblech.sourceforge.net/

另外目前发行的 Weblech 程序有一个非常明显的 bug,就是如果设置多个线程,当下载第一个URL时(一般是网站主页),如果等待时间过长,那么其他线程要么会认为网站已下载完而结束,要么会在下面标*代码处抛出NullPointerException。解决的方法很简单,只要在 nextURL = queue.getNextInQueue(); 后面加一个空值判断就可以了:

  1. synchronized(queue) { 
  2.     nextURL = queue.getNextInQueue();
  3.     if(nextURL == null) 
  4.         continue;
  5.     downloadsInProgress++;
  6. }

参考资料:
发现weblech的一个Bug(多线程)
http://www.blogjava.net/Andyluo/archive/2006/02/16/31013.html

GOOGLE服务列表

Filed under: News&Analysis,SearchEngine — Jet @ 2:36 上午
Tags:
原文出处: GOOGLE服务列表
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

Google GWT 查看指定网页的手机显示效果 http://www.google.com/gwt/n

Google SiteMaps https://www.google.com/webmasters/sitemaps

Google Ad Sense https://www.google.com/adsense/

Google AdWords https://adwords.google.com/select

Google分析 http://google.com/analytics/

Google问答 http://answers.google.com/

GoogleBase http://base.google.com/

Google博客搜索 http://blogsearch.google.com/

Google书签 http://www.google.com/bookmarks/

Google图书搜索 http://books.google.com/

Google日历 http://google.com/calendar/

Google目录 http://catalogs.google.com/

Google代码 http://code.google.com/

Google桌面工具条 http://deskbar.google.com/

Google桌面 http://desktop.google.com/

Google网页目录 http://www.google.com/dirhp

Google地球 http://earth.google.com/

Google股票 http://finance.google.com/

Google网上论坛 http://groups.google.com/

Google图片搜索 http://images.google.com/

Google实验室 http://labs.google.com/

Google本地搜索 http://local.google.com/

Google地图 http://maps.google.com/

Google火星 http://www.google.com/mars/

Google移动 http://mobile.google.com/

Google月球 http://moon.google.com/

Google电影 http://www.google.com/movies

Google音乐 http://www.google.com/musicsearch

Google新闻 http://news.google.com/

Google软件包 http://pack.google.com/

Google网页创作 http://pages.google.com/

Google个性化主页 http://www.google.com/ig

Google个性化搜索 http://labs.google.com/personalized

Google阅读器 http://www.google.com/reader

Google学术搜索 http://scholar.google.com/

Google搜索历史 http://www.google.com/searchhistory

Google短信服务 http://www.google.com/sms/

Google提示 http://www.google.com/webhp?complete=1

GoogleTalk http://talk.google.com/

Google工具条 http://toolbar.google.com/

Google旅行计划者 http://www.google.com/transit

Google翻译工具 http://www.google.com/translate_t

Google视频 http://video.google.com

Google网页加速器 http://webaccelerator.google.com

Google Web API http://www.google.com/apis

Google网页搜索 http://www.google.com

搜索引擎登陆

Filed under: SearchEngine — Jet @ 3:24 下午
原文出处: 搜索引擎登陆
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

Google、baidu等搜索引擎的站点登陆口:

goole: http://www.google.com/addurl/?hl=zh-CN&continue=/addurl
baidu: http://www.baidu.com/search/url_submit.html
yahoo: http://search.yahoo.com/info/submit.html
yahoo中国:http://search.help.cn.yahoo.com/h4_4.html
搜狗: http://db.sohu.com/regurl/regform.asp?Step=REGFORM&class=
中搜: http://202.108.33.161/web/frontward/free/free_speedlogin.asp
Tom搜索: http://search.tom.com/tools/weblog/log.php
一搜:http://www.yisou.com/search_submit.html?source=yisou_www_hp
hao123: http://post.baidu.com/f?kw=hao123
天网:http://www.infomall.cn/url_submit.html