JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
有关jive论坛搜索中文化的支持详解!
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]

Jive的搜索借用了apche提供的lucene搜索引擎。lucene是一个纯Java的高性能的全文搜索引擎,你可以到apache的网站找到lucene的更多信息:
http://jakarta.apache.org/lucene/docs/index.html

但在Jive使用的lucene包中,并不支持中文搜索,本站的系统也是构建在Jive之上进行扩展,
中文搜索问题由JR管理系统主要开发人员之一cherami解决。很多关注Jive的朋友都来信向我们索取Jive中文搜索问题的解决方法,
我在这儿把我们的解决方法整理出来,希望能够给您提供帮助。
1. 下载lucene中文搜索支持包
将lucene_cn.jar放到您的lib目录下。

2:修改您的DbSearchManager.java
在com.jivesoftware.forum.database.DbSearchManager.java中,首先导入lucene中文包:

import org.apache.lucene.analysis.cn.*;

在DbSearchManager.java中找到如下代码:

    /**     * The analyzer governs how words are tokenized. The standard anaylyzer     * does a decent job in most cases, but could be replaced under certain     * circumstances. We make the analyzer protected so that the DbQuery class     * can also reference it (indexing and searching should use the same     * analyzer).     */    protected static Analyzer analyzer = new StandardAnalyzer();

替换为:

    protected static Analyzer analyzer = new ChineseAnalyzer();


3. 重启Jive,现在你的Jive即支持中文搜索了。


4. 其它问题

要使用中文搜索,您的搜索的jsp的页面也需要使用GB2312的编码方式:
<%@ page contentType="text/html; charset=GB2312" %>
在我们的实现中,还遇到一个问题。就是在搜索时,如果直接在search.jsp页面中使用可以正常,但如果是从另外一个页面的搜索框中跳转到search.jsp页面,则搜索输入框中的所有的中文字符都变成“?”了。这个问题是和平台有关的,引起原因很复杂。我的解决方法是在search.jsp中得到查询串时,可以参考使用:

    java.net.URLEncoder.encode(queryText,"GB2312");

5:最后总结:
     对于中文搜索还需要修改两个jsp页面:search.jsp以及post.jsp将其中的:
java.net.URLEncoder.encode(queryText)、
URLEncoder.encode(url.toString())、
java.net.URLEncoder.encode(postLink.toString())、
URLEncoder.encode(name)、
URLEncoder.encode(email)都在其encode()里面加入,"GBK"即可使你的jivc论坛完全支持中文化的搜索了。


上一篇:关于软件的思考(一)---面向对象、模式、框架

下一篇:Java代码编写的30条建议

  • LOG处理SystemLoggerEvent.java
  • java指南之使用图形:概览
  • J2EE模式一瞥(4)
  • J2EE技术简单介绍
  • Jsdk5.0中新增枚举enum类型使用例解
  • AboutMyEditor(2)
  • tomcat5.0 目录结构
  • 实战J2EE—开发购物网站(一)
  • NoClassDefFoundError错误如何解决
  • strust框架中java web应用的中文化问题解决
  • 如何在Web工程中实现任务计划调度
  • 从一个ConnectionPool的实现看designpattern的运用(sourcecodeforJava1.1)
  • Class Loading ---(类装载机制,开发者不得不知道的故事) --上篇
  • 封装MIDlet
  • 《Java与模式》前言
  • 浅谈即时战略游戏在 J2ME 上的实现
  • (4)J2ME简表
  • JavaBean1018
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号