用户操作
[即时聊天] [发私信] [加为好友]
王颂毓ID:ChinaOk
18923次访问,排名6335好友0人,关注者0
ChinaOk的文章
原创 29 篇
翻译 0 篇
转载 0 篇
评论 2 篇
最近评论
mghueh:wow power leveling
oddoooooooo:三个文件的Zip包
无法打开
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Jive笔记2----关于Jive2中的中文搜索收藏

    新一篇: Jive笔记1--关于Jive1中的验证和相关类的调用 | 旧一篇: Jive笔记1--关于Jive1中的验证和相关类的调用

    Jive虽然构架不错,可是在中文处理上,实在可以算是垃圾。Lucene也是如此。最新版的Lucene1.2RC2中,queryParser类竟然只能处理A-Z|a-z|0-9的搜索。如果输入了中文,就给你扔出一个“Lexial parse Error”的错误。而且,E文中的Keyword是根据空格区分,这不适用于中文,所以一般采用基于字典的断词或者OverLapped断词。了解了上面的情况,我们就可以开始修改Lucene以实现中文搜索了。

    (1)修改queryParser.jj,修改里边的词法定义,以适应Unicode双字节。QueryParser是由JavaCC生成的,建议了解一下JavaCC的语法,和EBNF概念相似。

    (2)编写一个自己的Analyzer和Tokenizer。这里我从Lucene的Mail List中搞到了一个ChineseTokenizer.java,自己根据StandardAnalyzer.java写了一个ChineseAnalyzer.java。我们将用这个分析器用Overlapped方式切割一个完整的中文语句。

    (3)修改Jive2中的dbQuery.java和SearchManager.java,
    将imoprt com.lucene.*...改成import org.apache.lucene.*...
    将里边的StandardAnalyzer改成ChineseAnalyzer

    (4)编译,启动Jive,Rebuild index.现在,你的Jive2就能支持中文搜索了

    注意:
    Jive和AppServer必须在中文环境下运行。比如中文的NT/2000或者在Unix/Linux下边设置export LC_ALL=zh_CN.
    同时,Global.jsp中加上request.setCharacterEncoding("gb2312");
    分别给相关的页面加上contentType="text/html;charset=gb2312".这样可以不改动应付绝大多数AppServer,包括垃圾Tomcat4.0.1。
    还有,修改dbURL为jdbc:mysql://localhost/jive2?useUnicode=true&characterEncoding=gb2312
    附:
    修改的
    QueryParser.jjzh
    \ChineseAnalyzer.java
    zh\ChineseTokenizer.java
    三个文件的Zip包

    我是凭着记忆写的。讲得很模糊,也许老手不屑一顾,新手死活看不懂。对不住了,我的表达能力很差的。

    Good Luck!

     

    发表于 @ 2003年05月30日 15:00:00|评论(loading...)|编辑

    新一篇: Jive笔记1--关于Jive1中的验证和相关类的调用 | 旧一篇: Jive笔记1--关于Jive1中的验证和相关类的调用

    评论

    #oddoooooooo 发表于2006-03-31 23:45:00  IP: 219.82.215.*
    三个文件的Zip包
    无法打开
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © ChinaOk