精华帖 (3) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-01
linliangyi2007 写道 piziwang 写道 删除原有的主词典 岂不是其他地方的lucene+IKanalyzer全文检索 就无法使用了啊? 替换IK的词典,会不会影响到内存中已经加载的IK词典?? 这个也是一个问题,是会影响的。如果你既要全部的词典,又要个性化关键字,那你只能自己在分词后进行二次匹配,来决定那些词要留了。 也只能对分词后的结果再次进行二次匹配了。 谢谢您啊!呵呵 顺便问一句:网上很多论坛帖子的标签Tag是如何生成的啊?? |
|
返回顶楼 | |
发表时间:2009-12-03
在lucene3.0下使用会有错误的?
|
|
返回顶楼 | |
发表时间:2009-12-03
lucene3.0下出现以下错误
Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:137) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:246) at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:773) at org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:751) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1928) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1902) at IKAnalyzerDemo.main(IKAnalyzerDemo.java:43) |
|
返回顶楼 | |
发表时间:2009-12-03
jacky2007 写道 lucene3.0下出现以下错误
Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:137) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:246) at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:773) at org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:751) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1928) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1902) at IKAnalyzerDemo.main(IKAnalyzerDemo.java:43) IK3.1.6GA不支持Lucene3.0版本,原因是Lucene3.0完全改变了先前版本的analysis部分的API。在lucene2.9开始,已经声明要废除旧API,不过做了兼容处理,到了3.0则彻底删除了。 为此IK Analyzer将在下周一份发布 3.2.0版本,新版本将全面跟随lucene3.0的升级。新版本会支持lucene2.9 - lucene3.0 以及 solr1.4 ,但不再对lucene2.4的API支持。 目前3.2.0版本已经在测试阶段,您可以留下email,提前获取新版本体验。谢谢 |
|
返回顶楼 | |
发表时间:2009-12-03
linliangyi2007 写道 jacky2007 写道 lucene3.0下出现以下错误 Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:137) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:246) at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:773) at org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:751) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1928) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1902) at IKAnalyzerDemo.main(IKAnalyzerDemo.java:43) IK3.1.6GA不支持Lucene3.0版本,原因是Lucene3.0完全改变了先前版本的analysis部分的API。在lucene2.9开始,已经声明要废除旧API,不过做了兼容处理,到了3.0则彻底删除了。 为此IK Analyzer将在下周一份发布 3.2.0版本,新版本将全面跟随lucene3.0的升级。新版本会支持lucene2.9 - lucene3.0 以及 solr1.4 ,但不再对lucene2.4的API支持。 目前3.2.0版本已经在测试阶段,您可以留下email,提前获取新版本体验。谢谢 谢谢回复. email:ccx1999#163.com(请把#换成@) |
|
返回顶楼 | |
发表时间:2010-02-24
huangfox 写道 请问
对 “玩具汽车” 进行分词被分成: “玩具”和“汽车” 但是检索需求 查“车”也能够检索出 玩具汽车 请问是否可以将“玩具汽车” 分成: 玩 具 汽 车 玩具 汽车 即:第一按字分;第二按词分。 若是要改源代码,怎么处理呢? ps:对分词源码还没有读过呢~ 你可以加一个简单的单字切分的子分词器到IK中,实现IK的ISegmenter接口,并修改Configuration中的loadSegmenter方法。 同时必须使用IKAnalyzer(false)方式构造分词器,这样不会过滤重叠的单字切分。 |
|
返回顶楼 | |
发表时间:2010-08-10
在使用中有几个问题 请老师在百忙中回答一下
1 我在mydict.dic里面写了 “7仔”这个词,分词分不出来,是不是因为数字和文字混在一起就不行啊?(其他自定义的词是可以的) 2 如果我想分出来的词,都是长度为2以上的,怎么做呢? 3 我代码里写了 Analyzer analyzer = new IKAnalyzer(); this.iwriter = new IndexWriter(indexDir,analyzer ,true , IndexWriter.MaxFieldLength.UNLIMITED); 那怎么获取到 IKSegmentation ikSeg 因为我想根据切分出来的Lexeme的Type来判断是否只是TYPE_CJK_NORMAL 因为我只需要把这个类型的词进行索引 |
|
返回顶楼 | |
发表时间:2010-08-10
guava 写道 在使用中有几个问题 请老师在百忙中回答一下
1 我在mydict.dic里面写了 “7仔”这个词,分词分不出来,是不是因为数字和文字混在一起就不行啊?(其他自定义的词是可以的) 2 如果我想分出来的词,都是长度为2以上的,怎么做呢? 3 我代码里写了 Analyzer analyzer = new IKAnalyzer(); this.iwriter = new IndexWriter(indexDir,analyzer ,true , IndexWriter.MaxFieldLength.UNLIMITED); 那怎么获取到 IKSegmentation ikSeg 因为我想根据切分出来的Lexeme的Type来判断是否只是TYPE_CJK_NORMAL 因为我只需要把这个类型的词进行索引 1.词典只能处理全中文的词汇,对于数字型字符,会被分配到数字切分器处理,无法进入中文切分过程 2/3综合两个问题,我想你的需求是仅需要对词典包含的词进行切分,那么你可以修改源码, org.wltea.analyzer.cfg.Configuration类中的public static List<ISegmenter> loadSegmenter()方法,移除其中的QuantifierSegmenter和LetterSegmenter子分词器 另外,修改org.wltea.analyzer.Context中的addLexeme方法,过滤长度小于2的词语,只添加Type为TYPE_CJK_NORMAL的词元 |
|
返回顶楼 | |
发表时间:2010-08-10
guava 写道 在使用中有几个问题 请老师在百忙中回答一下
1 我在mydict.dic里面写了 “7仔”这个词,分词分不出来,是不是因为数字和文字混在一起就不行啊?(其他自定义的词是可以的) 2 如果我想分出来的词,都是长度为2以上的,怎么做呢? 3 我代码里写了 Analyzer analyzer = new IKAnalyzer(); this.iwriter = new IndexWriter(indexDir,analyzer ,true , IndexWriter.MaxFieldLength.UNLIMITED); 那怎么获取到 IKSegmentation ikSeg 因为我想根据切分出来的Lexeme的Type来判断是否只是TYPE_CJK_NORMAL 因为我只需要把这个类型的词进行索引 另外提醒你,如果可以尽可能升级Lucene到3.0并下载Ik Analyzer 3.2.3版本 |
|
返回顶楼 | |
发表时间:2010-08-11
/**
* 向分词结果集添加词元 * @param lexeme */ public void addLexeme(Lexeme lexeme){ if(!Dictionary.isStopWord(segmentBuff , lexeme.getBegin() , lexeme.getLength())){ if(lexeme.getLength()>1 && lexeme.getLexemeType()==0){ this.lexemeSet.addLexeme(lexeme); } } } 作了这样的修改 ok了 谢谢 |
|
返回顶楼 | |