精华帖 (14) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-09
我上面说的是文件储存编码,这个是要解决的,也好解决。
你说的是字符集问题,当然啦,如果用户检索的是繁体字,你的简体词典里又没有这个词,那肯定检索不到结果。我看过有的中文分词做了这方面的工作,里面有三个版本的中文词典。如有需要我可以发给你。 很不好意思,高度错误问题仍然存在,我已经尝试了很多次了。你应该也收到我的截图吧。郁闷,为什么你运行就没有问题呢。是不是你本地还有什么修改没提交?这个问题不解决没法用呀。 |
|
返回顶楼 | |
发表时间:2007-08-09
我委托其他同学试一下"高度错误问题"。他们下载google上提供的 链接 后运行和我一样是正确的。
我在我的本上(xp home JDK1.6)、PC(xp pro JDK1.6)、Server(rhas JDK1.5)三个机器上使用高亮都是OK的,委托帮忙测试的人也都反馈正确, 但是你确实截图上出现高亮到最大词的问题,这也是千真万确的,所以很雾水。 而且如果这个问题为真,也应是代码的问题,应跟操作系统环境无关。 只能多多试验了,然后最后求证,看看差别在什么地方。 ---------------------- 背景: rainsf说的问题是: 检索“中华”时,在它那边的环境中会把“中华人民共和国”加亮的问题。 希望有热心的同学帮忙一下 下载paoding-analysis-2.0.0.zip解压后,进入cmd命令行,运行一下example.bat如下: E:\xxx\paoding-analysis-2.0.0>example.bat 中华 看看结果如何,是否<b></b>仅包含在“中华”,还是包含在“中华人民共和国”外面 然后把运行结果COPY发送站内消息给我。 不胜感谢 ~~ orz (我给您趴下了) [由于本人不慎,打的JAR是JDK6的,所以如果环境不是JDK6的同学,可能不能直接运行example.bat] 这是我的运行结果: 引用 E:\...\paoding-analysis-2.0.0>example.bat 中华 E:\...\paoding-analysis-2.0.0>java -cp ./;paoding-analyis.jar;lib/commons-logging.jar;lib/lucene-core-2.2.0.jar;lib/lucene-highlighter-2.2.0.jar net.paoding.analysis.examples.gettingstarted.ch2.PeopleRepublicOfChina 中华 2007-8-9 21:39:27 net.paoding.analysis.knife.FileWordsLoader setProperties 信息: paoding.dic.home=dic/ 2007-8-9 21:39:29 net.paoding.analysis.knife.PaodingMaker make 信息: add knike: net.paoding.analysis.knife.CJKKnife 2007-8-9 21:39:29 net.paoding.analysis.knife.PaodingMaker make 信息: add knike: net.paoding.analysis.knife.NumberKnife 2007-8-9 21:39:29 net.paoding.analysis.knife.PaodingMaker make 信息: add knike: net.paoding.analysis.knife.LetterKnife Searching for: 中华 <b>中华</b>人民共和国(英文:The People's Republic of China,通常简称...];<b>中 华</b>人民共和国将行政區劃分为23个省、5个少数民族自治区、4个直辖市、以及2个特别 行政区,但台湾不在<b>中华</b>人民共和国政府实际控制范围内(参见:台湾问题)。<b> 中华</b>人民共和国是世界上人口最多的国家,人口总数...多数,其余55个民族被统称为 少数民族。<b>中华</b>人民共和国境内的通用语言是汉语普通话,使用的文字是规范汉字 (此即汉语簡化字),少数民族如壮族、维吾尔族、蒙古族、藏族、朝鲜族等拥有自己的文 字。《<b>中华</b>人民共和国宪法 E:\...\paoding-analysis-2.0.0> |
|
返回顶楼 | |
发表时间:2007-08-10
根据这两天友善的同学们给我的反馈,庖丁暂时收到有这几个方面要求:
1、编译成较低JDK版本的JAR包[目前打的JAR包是JDK6.0的,一部分人应该下载源代码后自己打包成符合自己环境的版本-还好这不是不可解决的] 2、字典的保存和读取强制采用UTF-8编码格式 3、支持运行时修改、添加、删除字典以及字典目录(可配置间隔时间) 4、支持把繁体字的UTF-8编码,等价转化于对应字的简体UTF-8进行,后进行分词(也就不再另外有专门的繁体词典)-是否可行? 5、庖丁不需要去保证能够正确处理非UTF-8编码的文本。对于GBK(GB2312),big5等编码的文本,都应在提交给庖丁之前就已经转为UTF-8编码。 |
|
返回顶楼 | |
发表时间:2007-08-10
我已经把paoding在linux下用起来了,对编码问题根本可以视而不见,一样很好用。
|
|
返回顶楼 | |
发表时间:2007-08-10
我终于发现在“高亮错误”的可笑原因,在JDK1.6环境下,直接命令行来运行那几个例子,高亮就没有问题,但我在Eclipse下无论用JDK1.5还是JDK1.6,编译级别无论用5还是6,高亮都一样是错误的,在Tomcat环境下运行情况同样。以上情况看起来很可笑。
真的很郁闷,具体原因出在哪里,还没有时间考究,只知道有这样的事实。切切.王,你也在Eclipse或服务器环境下,或JDK1.5下试试吧,看看情况怎样。。。 |
|
返回顶楼 | |
发表时间:2007-08-11
在网上找到一个 BIG2GB的类简单的改了下,做了一个包,看 庖丁 需要不,需要的话就加进去! 使用方法 private static String QUERY = "固若金湯"; GB2Big5 pTmp = GB2Big5.getInstance(); String queryString = pTmp.big52gb(QUERY); QueryParser parser = new QueryParser(FIELD_NAME, PaodingAnalyzer.queryMode(paoding)); Query query = parser.parse(queryString); 这段时间在搞拼音联想(目前有些BUG),过段时间在加入到庖丁 里面去 |
|
返回顶楼 | |
发表时间:2007-08-12
[表述错误-所以删除]
|
|
返回顶楼 | |
发表时间:2007-08-12
简繁体方面,庖丁需要有人贡献这些函数:
1、big5->utf-8 2、gbk->utf-8 3、utf-8繁->utf-8简 或者,等价的另一种方式: 4、big5->gbk 5、utf-8->gbk 6、gbk繁->gbk简 第一种方式感官上优于第二种。 |
|
返回顶楼 | |
发表时间:2007-08-12
PaodingMaker 在每次加载的时候都会初始化一次,很好损失内存,在WEB下应用会经常内存溢出,建议修改成单例模式,其他保持不变,修改如下:
public class PaodingMaker { private static Log log = LogFactory.getLog(PaodingMaker.class); private static Paoding paoding; private static PaodingMaker instance = null; public static synchronized PaodingMaker getInstance() { if (instance == null) instance = new PaodingMaker(); return instance; } public PaodingMaker(){ make(); } public static Paoding make() { if (paoding == null) { synchronized (PaodingMaker.class) { paoding = make(Config.properties()); } } return paoding; } // @SuppressWarnings("unchecked") public static Paoding make(Properties p) { try { Paoding paoding = new Paoding(); // 包装各种字典-将自动寻找,若存在则读取类路径中的paoding-analysis.properties文件 // 若不存在该配置文件,则一切使用默认设置,即字典在文件系统当前路径的dic下(非类路径dic下) Dictionaries dictionaries = new FileDictionaries(p); Enumeration names = p.propertyNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); // 以paoding.knife.class开头的被认为是knife对象 if (name.startsWith("paoding.knife.class")) { String className = p.getProperty(name); Class clazz = Class.forName(className); Knife knife = (Knife) clazz.newInstance(); if (knife instanceof DictionariesWare) { ((DictionariesWare) knife) .setDictionaries(dictionaries); } // 把刀交给庖丁 System.out.println("add knike: " + className); log.info("add knike: " + className); paoding.addKnife(knife); } } return paoding; } catch (Exception e) { throw new IllegalStateException("Wrong paoding properties config.", e); } } } 修改后效率大大提高: Searching time: 188 毫秒 (第一次加载) Searching time: 16 毫秒 Searching time: 0 毫秒 Searching time: 15 毫秒 Searching time: 0 毫秒 Searching time: 0 毫秒 Searching time: 0 毫秒 |
|
返回顶楼 | |
发表时间:2007-08-12
Qieqie 写道 简繁体方面,庖丁需要有人贡献这些函数:
1、big5->utf-8 2、gbk->utf-8 3、utf-8繁->utf-8简 或者,等价的另一种方式: 4、big5->gbk 5、utf-8->gbk 6、gbk繁->gbk简 第一种方式感官上优于第二种。 这个继续解决中,准备搞台电脑安装繁体版 XP |
|
返回顶楼 | |