Jive笔记2----关于Jive2中的中文搜索
2003-05-30 15:00
369 查看
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!
(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!
相关文章推荐
- Jive笔记2----关于Jive2中的中文搜索
- 关于busybox中文显示问题(摘录同事笔记)
- 谷歌中文搜索质量团队:关于链接的常见问题
- 关于dotnetnuke中文搜索问题的分析+临时方法
- keras中文文档笔记9——关于keras层
- [Web学习]关于form提交的中文字符串错误笔记
- 关于百度和Google的中文搜索
- Jive笔记1--关于Jive1中的验证和相关类的调用
- [原创]java WEB学习笔记17:关于中文乱码的问题 和 tomcat在eclipse中起动成功,主页却打不开
- [笔记]关于网页的中文乱码问题解决
- JSP学习笔记之二——关于中文乱码
- 关于MLX90614红外测温模块SMBus 协议的学习笔记<一>(附MLX90614中文资料,英文资料)
- 关于form提交的中文字符串错误笔记
- 关于站内搜索的一些笔记
- 关于solr不能搜索中文
- 初学JSP笔记———关于中文乱码
- Oracle新手笔记(2) 关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法
- java笔记--关于线程同步(5种同步方式)
- 工作笔记(三)--关于文件、图片、视频的总结
- [翻译练习]关于在传统ASP.NET Web应用程序上面使用Routing的一些笔记