|
|
| 使您的Jive搜索支持中文 |
作者:未知
文章来源:www.jspcn.net
访问次数:268次
加入时间:2005年01月19日
|
|
Jive的搜索借用了apche提供的lucene搜索引擎。lucene是一个纯Java的高性能的全文搜索引擎,你可以到apache的网站找到lucene的更多信息: http://jakarta.apache.org/lucene/docs/index.html
但在Jive使用的lucene包中,并不支持中文搜索,本站的系统也是构建在Jive之上进行扩展,中文搜索问题由JR管理系统主要开发人员之一cherami解决。很多关注Jive的朋友都来信向我们索取Jive中文搜索问题的解决方法,我在这儿把我们的解决方法整理出来,希望能够给您提供帮助。
1. 从本站下载lucene中文搜索支持包 http://www.javaresearch.org/dn/lucene_cn.jar 将lucene_cn.jar放到您的lib目录下。
2. 修改您的DbSearchManager.java 在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");
至此,您的Jive应该也能搜索中文了。祝你好运!
--转载自Java研究组织 http://javaresearch.org/thread.jsp?forum=25&thread=1232
|
|
|