该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-11
楼主,不知道你开发的KI_CAnalyzer 支持不支持highlighter(lucene contribution包里的)关键词加亮,为什么我的返回中搜索"人"这个关键词的话,会加亮诸如"高层人士","管理人员"...等等这些不太想要的词,是不是有点越俎代庖了!
|
|
返回顶楼 | |
发表时间:2007-03-22
楼主,怎么不把整个分词系统的类图画下,好让我们这些菜鸟快速看明白这个结构。
|
|
返回顶楼 | |
发表时间:2007-03-23
楼主,我看了下源码,有两个类:KnifeBox和Paoding在闲着,这个庖丁Paoding怎么背了一堆kinfe跑到一边儿玩去了呢?
|
|
返回顶楼 | |
发表时间:2007-03-23
shaquan6776 写道 楼主,我看了下源码,有两个类:KnifeBox和Paoding在闲着,这个庖丁Paoding怎么背了一堆kinfe跑到一边儿玩去了呢? Paoding末有闲着,背着刀的他不至于跑不见了,那他可真忽悠人了。
看看XTokenizer.java,Paoding在XTokenizer公司工作。 ------------ 偶最近一段来项目都比较紧 所以连paoding的hosting没做,也没有做其他的前进。sorry sorry! -------------------------- 有些问题没有进行反馈或解决 如果有出现问题 或提议, 哥们你自己动手改改代码然后提交上来 我来整合发布 |
|
返回顶楼 | |
发表时间:2007-03-26
Qieqie 写道 shaquan6776 写道 楼主,我看了下源码,有两个类:KnifeBox和Paoding在闲着,这个庖丁Paoding怎么背了一堆kinfe跑到一边儿玩去了呢? Paoding末有闲着,背着刀的他不至于跑不见了,那他可真忽悠人了。
看看XTokenizer.java,Paoding在XTokenizer公司工作。 ------------ 偶最近一段来项目都比较紧 所以连paoding的hosting没做,也没有做其他的前进。sorry sorry! -------------------------- 有些问题没有进行反馈或解决 如果有出现问题 或提议, 哥们你自己动手改改代码然后提交上来 我来整合发布 Paoding!难道他矿工了不成!故,特帖源码以示证据。 public final class XTokenizer extends TokenStream implements Collector { private final Reader input; private static final int bufferLength = 128; private final char[] buffer = new char[bufferLength]; private int offset; private final Beef beef = new Beef(buffer, 0, 0); private int dissected; private Knife knife; private TokenCollector tokenCollector; private Iterator<Token> tokenIteractor; public XTokenizer(Reader input, Knife knife, TokenCollector tokenCollector) { this.input = input; this.knife = knife; this.tokenCollector = tokenCollector; } public TokenCollector getTokenCollector() { return tokenCollector; } public void setTokenCollector(TokenCollector tokenCollector) { this.tokenCollector = tokenCollector; } public void collect(String word, int offset, int end) { tokenCollector.collect(word, this.offset + offset, this.offset + end); } // ------------------------------------------------- @Override public Token next() throws IOException { // 已经穷尽tokensIteractor的Token对象,则继续请求reader流入数据 while (tokenIteractor == null || !tokenIteractor.hasNext()) { int read = 0; int remainning = -1;//重新读入字符时,buffer中还剩下的字符数,-1表示当前暂不不需要从reader中读入字符 if (dissected >= beef.length()) { remainning = 0; } else if (dissected < 0){ remainning = bufferLength + dissected; } if (remainning != -1) { if (remainning > 0) { System.arraycopy(buffer, -dissected, buffer, 0, remainning); } read = input.read(buffer, remainning, bufferLength - remainning); int charCount = remainning + read; if (charCount < 0) { // reader已尽,按接口next()要求返回null. return null; } if (charCount < bufferLength) { buffer[charCount ++] = 0; } // 构造“牛”,并使用knife“解”之 beef.set(0, charCount); offset -= remainning; dissected = 0; } dissected = knife.dissect((Collector)this, beef, dissected); offset += read;// !!! tokenIteractor = tokenCollector.iterator(); } // 返回tokensIteractor下一个Token对象 return tokenIteractor.next(); } // ------------------------------------------------- @Override public void close() throws IOException { super.close(); input.close(); } }(注:去掉了注释!) |
|
返回顶楼 | |
发表时间:2007-03-26
不好意思,原来是在XFactory里用到的!我用 Eclipse的Open Call
Hierarchy竟然没发现!郁闷 另外:我向base.dic文件里增加词语,测试的时候会打印出一句:“出现这个文字,表示输入的词语排序错误,请确保词典排序正确>>>>>>>>>”。我找到源码, if (subs.containsKey(key)) { System.out.println("出现这个文字,表示输入的词语排序错误,请确保词典排序正确>>>>>>>>>" + hashChar); } 看的不甚明白,请问楼主,字典里的词语存放还有必须特定的顺序吗? |
|
返回顶楼 | |
发表时间:2007-03-26
对于这个全文检索我一直有一个疑惑,希望大家能解答。全文检索的索引是怎么做的?
因为分词以后,其实分出来的词加起来要比原先的内容还要多,对于如此大量的索引数据,lunce是怎么处理的? 索引是如何组织检索的? |
|
返回顶楼 | |