精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-08
果然solr1.4的接口发生了微妙的变化
|
|
返回顶楼 | |
发表时间:2009-11-08
看来LZ对汉语有研究,像汉语这种分析语,汉语组词是非常灵活,远远超过印欧语言。但是解析复杂度也增加了。
|
|
返回顶楼 | |
发表时间:2009-11-08
IK3.1.6已经成功支持solr1.4,请使用下面的配置文件:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory14" isMaxWordLength="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory14" isMaxWordLength="false"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> </fieldType> 或者 <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> 如果你使用的solr1.3,请使用下面的配置: <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> </fieldType> 或者 <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> 至于两者的不同之处,请细心的网友们,仔细观察, ![]() 飘过~~~~~~~ |
|
返回顶楼 | |
发表时间:2009-11-08
最后修改:2009-11-08
jbas 写道 linliangyi2007 ,你好,
我是按你文档中的写的,应该不会错的,这个问题应该是lucene-core-2.9.1修改了TokenStream 结构导致的,别的中文分词也有这个问题,但有些已经支持最新2.9.1, 请你这边再看一下了。 谢谢! 当我执行:http://localhost:8983/solr/db/select/?q=title%3A%22%E4%BA%92%E8%81%94%E7%BD%91%22&version=2.2&start=0&rows=10&indent=on 这个url 查询后,显示如下错误: HTTP ERROR: 500 org.wltea.analyzer.solr.IKTokenizerFactory.create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer; java.lang.AbstractMethodError: org.wltea.analyzer.solr.IKTokenizerFactory.create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer; at org.apache.solr.analysis.TokenizerChain.getStream(TokenizerChain.java:69) at org.apache.solr.analysis.SolrAnalyzer.reusableTokenStream(SolrAnalyzer.java:74) at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:364) at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:567) 。。。 您反馈的问题已经解决,原因是由于solr1.4修改了TokenizerFactory接口,与lucene2.9无关。新的IK3.1.6版本地址http://linliangyi2007.iteye.com/blog/512577 关于Lucene2.9,它的分词器接口做了新的设计,但仍然与旧接口兼容。我们会等待lucene3.0分布后,接口确定了,再跟进发布IK3.5版本的。 再次感谢您的反馈! |
|
返回顶楼 | |
发表时间:2009-11-10
jbas 写道 老大,你的lucene是什么版本了?为什么我的是lucene-core-2.9.1中报错:
org.wltea.analyzer.solr.IKTokenizerFactory.create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer; java.lang.AbstractMethodError: org.wltea.analyzer.solr.IKTokenizerFactory.create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer; 是不支持 public TokenStream create(Reader reader) { return new IKAnalyzer().tokenStream("text", reader); } 这种写法。 IK用的Lucene版本好像是2.4的 而2.9的版本修改了一些属性 可能导致了这个错误 |
|
返回顶楼 | |
发表时间:2009-11-10
shijiyu1984 写道 jbas 写道 老大,你的lucene是什么版本了?为什么我的是lucene-core-2.9.1中报错:
org.wltea.analyzer.solr.IKTokenizerFactory.create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer; java.lang.AbstractMethodError: org.wltea.analyzer.solr.IKTokenizerFactory.create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer; 是不支持 public TokenStream create(Reader reader) { return new IKAnalyzer().tokenStream("text", reader); } 这种写法。 IK用的Lucene版本好像是2.4的 而2.9的版本修改了一些属性 可能导致了这个错误 跟lucene的版本无关,2.9虽然改了分词器接口,但依然向下兼容2.4的接口。 问题已经找到,是solr1.4的TokenizerFactory接口变化造成的,在IK3.1.6中已经支持solr1.4了。 |
|
返回顶楼 | |
发表时间:2009-11-10
CharacterHelper.isCJKCharacter(char input)这个方法判断的中文好像只对GB2312的编码的汉字有用 对有些GBK的汉字判断好像不适用
|
|
返回顶楼 | |
发表时间:2009-11-10
上次在Solr1.4中将自定义字典加大 字典文件7M左右 出现加载字典内存溢出问题 设置Tomcat的虚拟内存都没有能够解决 最后采取的办法是将你加载字典的结构给修改了
|
|
返回顶楼 | |
发表时间:2009-11-10
不知道你有什么好的解决方法?
|
|
返回顶楼 | |
发表时间:2009-11-10
shijiyu1984 写道 上次在Solr1.4中将自定义字典加大 字典文件7M左右 出现加载字典内存溢出问题 设置Tomcat的虚拟内存都没有能够解决 最后采取的办法是将你加载字典的结构给修改了
你使用API加载的嘛还是配置文件?能说说改了哪些东西吗? |
|
返回顶楼 | |