Jive笔记2----关于Jive2中的中文搜索

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
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
zhChineseTokenizer.java
三个文件的Zip包

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

Good Luck!

 

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值