- 浏览: 1012633 次
- 性别:
- 来自: 福州
最新评论
-
guanxin2012:
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
分享开源表达式解析器IK-Expression2.0 -
qqgigas:
LZ,public boolean createUser(LD ...
Sun Directory Server/LDAP学习笔记(二)——API说明及代码样例 -
gao_shengxian:
Hibernate: update T_GX_TEST set ...
优雅Java编程 之 使用Hibernate存储Oracle Spatial对象 -
a78113534:
感谢大神,在安卓里面调用成功了。
发布IK Expression开源表达式解析器 V2.1.0 -
majiedota:
加油
来自开源支持者的第一笔捐赠
祝贺网友-1987(李良杰)加盟IKAnalyzer开发团队,感谢他对solr集成部分的测试工作
V3.1.5GA版本变更:
1.新增org.wltea.analyzer.solr.IKTokenizerFactory,支持solr的TokenizerFactory接口配置
类org.wltea.analyzer.solr.IKTokenizerFactory
说明:该类继承与solr的BaseTokenizerFactory,是IK分词器对solr项目TokenizerFactory接口的扩展实现。从版本V3.1.5起。
属性:isMaxWordLength。该属性决定分词器是否采用最大词语切分。
solr配置样例
使用IKAnalyzer的配置
使用IKTokenizerFactory的配置
2.修订了3.1.3GA中,在特殊情况下对未知词的切分不输出的bug
3.应广大网友要求,使用JDK5.0对jar包编译发布
下载 :IKAnalyzer3.1.5GA完整包
更多详细请参看《IKAnalyzer中文分词器V3.1.5使用手册》
你使用API加载的嘛还是配置文件?能说说改了哪些东西吗?通过配置文件加载的
更GB2312和GBK没有关系的,java内部使用UTF-8的内码的。
CJK字符判断的是一个固定的编码区域,落在区域内的,就认为是CJK。
这些方法只是IK的辅助工具类,并不一定使用所有的范围的,呵呵。
你使用API加载的嘛还是配置文件?能说说改了哪些东西吗?
IK用的Lucene版本好像是2.4的 而2.9的版本修改了一些属性 可能导致了这个错误
跟lucene的版本无关,2.9虽然改了分词器接口,但依然向下兼容2.4的接口。
问题已经找到,是solr1.4的TokenizerFactory接口变化造成的,在IK3.1.6中已经支持solr1.4了。
IK用的Lucene版本好像是2.4的 而2.9的版本修改了一些属性 可能导致了这个错误
您反馈的问题已经解决,原因是由于solr1.4修改了TokenizerFactory接口,与lucene2.9无关。新的IK3.1.6版本地址http://linliangyi2007.iteye.com/blog/512577
关于Lucene2.9,它的分词器接口做了新的设计,但仍然与旧接口兼容。我们会等待lucene3.0分布后,接口确定了,再跟进发布IK3.5版本的。
再次感谢您的反馈!
感谢你的宝贵的反馈,我们会及时跟进lucene2.9.1的变更
(PS:lucene的设计真有问题,哪有老变接口,而且不向下兼容的!!!)
我想问下你是怎么配置的,如下配置:
还有正确的org.apache.solr.analysis.TokenizerFactory#create(java.io.Reader)方法的代码如下:
再说,在lucene中不需要用的IKTokenizerFactory,而应该使用IKAnalyzer啊,看说明文档吧
你这段代码不是IKTokenizerFactory中的啊,是之前在帖子上发的。3.1.5GA中IKTokenizerFactory中已经不是这么写了啊
请提供你的邮箱地址。
使用SVN是为了用户能及时得到最新的代码。
V3.1.5GA版本变更:
1.新增org.wltea.analyzer.solr.IKTokenizerFactory,支持solr的TokenizerFactory接口配置
类org.wltea.analyzer.solr.IKTokenizerFactory
说明:该类继承与solr的BaseTokenizerFactory,是IK分词器对solr项目TokenizerFactory接口的扩展实现。从版本V3.1.5起。
属性:isMaxWordLength。该属性决定分词器是否采用最大词语切分。
solr配置样例
使用IKAnalyzer的配置
<schema name="example" version="1.1"> …… <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> …… </schema>
使用IKTokenizerFactory的配置
<fieldType name="text" class="solr.TextField" > <analyzer type="index"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/> …… </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/> …… </analyzer> </fieldType>
2.修订了3.1.3GA中,在特殊情况下对未知词的切分不输出的bug
3.应广大网友要求,使用JDK5.0对jar包编译发布
下载 :IKAnalyzer3.1.5GA完整包
更多详细请参看《IKAnalyzer中文分词器V3.1.5使用手册》
评论
21 楼
shijiyu1984
2009-11-13
你使用API加载的嘛还是配置文件?能说说改了哪些东西吗?通过配置文件加载的
20 楼
linliangyi2007
2009-11-10
shijiyu1984 写道
CharacterHelper.isCJKCharacter(char input)这个方法判断的中文好像只对GB2312的编码的汉字有用 对有些GBK的汉字判断好像不适用
更GB2312和GBK没有关系的,java内部使用UTF-8的内码的。
CJK字符判断的是一个固定的编码区域,落在区域内的,就认为是CJK。
这些方法只是IK的辅助工具类,并不一定使用所有的范围的,呵呵。
19 楼
linliangyi2007
2009-11-10
shijiyu1984 写道
上次在Solr1.4中将自定义字典加大 字典文件7M左右 出现加载字典内存溢出问题 设置Tomcat的虚拟内存都没有能够解决 最后采取的办法是将你加载字典的结构给修改了
你使用API加载的嘛还是配置文件?能说说改了哪些东西吗?
18 楼
shijiyu1984
2009-11-10
不知道你有什么好的解决方法?
17 楼
shijiyu1984
2009-11-10
上次在Solr1.4中将自定义字典加大 字典文件7M左右 出现加载字典内存溢出问题 设置Tomcat的虚拟内存都没有能够解决 最后采取的办法是将你加载字典的结构给修改了
16 楼
shijiyu1984
2009-11-10
CharacterHelper.isCJKCharacter(char input)这个方法判断的中文好像只对GB2312的编码的汉字有用 对有些GBK的汉字判断好像不适用
15 楼
linliangyi2007
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);
}
这种写法。
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了。
14 楼
shijiyu1984
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);
}
这种写法。
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的版本修改了一些属性 可能导致了这个错误
13 楼
linliangyi2007
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)
。。。
我是按你文档中的写的,应该不会错的,这个问题应该是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版本的。
再次感谢您的反馈!
12 楼
lianj_lee
2009-11-08
IK3.1.6已经成功支持solr1.4,请使用下面的配置文件:
或者
如果你使用的solr1.3,请使用下面的配置:
或者
至于两者的不同之处,请细心的网友们,仔细观察,
飘过~~~~~~~
<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>
至于两者的不同之处,请细心的网友们,仔细观察,
飘过~~~~~~~
11 楼
carlkkx
2009-11-08
看来LZ对汉语有研究,像汉语这种分析语,汉语组词是非常灵活,远远超过印欧语言。但是解析复杂度也增加了。
10 楼
lianj_lee
2009-11-08
果然solr1.4的接口发生了微妙的变化
9 楼
lianj_lee
2009-11-08
将<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> 就可以了。
至于为什么采用tokenizer报错,我估计是solr1.4接口发生改变,在研究中...
<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> 就可以了。
至于为什么采用tokenizer报错,我估计是solr1.4接口发生改变,在研究中...
8 楼
linliangyi2007
2009-11-05
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)
我的配置如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<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="true"/>
<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>
我是按你文档中的写的,应该不会错的,这个问题应该是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)
我的配置如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<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="true"/>
<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>
感谢你的宝贵的反馈,我们会及时跟进lucene2.9.1的变更
(PS:lucene的设计真有问题,哪有老变接口,而且不向下兼容的!!!)
7 楼
jbas
2009-11-05
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)
我的配置如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<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="true"/>
<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>
我是按你文档中的写的,应该不会错的,这个问题应该是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)
我的配置如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<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="true"/>
<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>
6 楼
lianj_lee
2009-11-05
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);
}
这种写法。
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);
}
这种写法。
我想问下你是怎么配置的,如下配置:
<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>
还有正确的org.apache.solr.analysis.TokenizerFactory#create(java.io.Reader)方法的代码如下:
public TokenStream create(Reader reader) { return new IKTokenizer(reader , isMaxWordLength()); }
5 楼
linliangyi2007
2009-11-05
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);
}
这种写法。
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);
}
这种写法。
再说,在lucene中不需要用的IKTokenizerFactory,而应该使用IKAnalyzer啊,看说明文档吧
4 楼
linliangyi2007
2009-11-05
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);
}
这种写法。
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);
}
这种写法。
你这段代码不是IKTokenizerFactory中的啊,是之前在帖子上发的。3.1.5GA中IKTokenizerFactory中已经不是这么写了啊
3 楼
jbas
2009-11-05
老大,你的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);
}
这种写法。
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);
}
这种写法。
2 楼
linliangyi2007
2009-10-28
shadowlin 写道
你好,除了用googlecode的svn外,能否提供下3.1.5GA的源码啊?谢谢
请提供你的邮箱地址。
使用SVN是为了用户能及时得到最新的代码。
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57772013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25073首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
发布 IK Analyzer 2012 版本
2012-03-08 11:23 36163新版本改进: 支持分词歧义处理 支持数量词合并 词典支持中英 ... -
CSDN发生严重用户账号泄密事件
2011-12-21 19:21 2564之前有在CSDN注册过的兄弟们,注意了。。。 如果你的邮箱, ... -
一个隐形的java int溢出
2011-08-30 09:44 7555故事的背景: 笔者最近在做一个类SNS的项目,其中 ... -
雷军 :互联网创业的葵花宝典
2011-05-04 10:35 3593博主评: 这片博客很短 ... -
Luci-mint站内搜索实测
2011-04-02 16:18 4135关于Luci-mint 服务器硬 ... -
发布 IK Analyzer 3.2.8 for Lucene3.X
2011-03-04 17:49 14251IK Analyzer 3.2.8版本修订 ... -
TIPS - XML CDATA中的非法字符处理
2011-02-17 15:03 3301XML解析过程中,常遇见CDATA中存在非法字符,尤其在火星文 ... -
对Cassandra的初体验
2010-10-13 17:58 9132作为“云计算”时代的架构设计人员而言,不懂K-V库会被 ... -
Spring + iBatis 的多库横向切分简易解决思路
2010-10-11 13:43 93541.引言 笔者最近在做一个互联网的“类SNS”应用,应用 ... -
发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0
2010-09-08 14:43 5822新版本IKAnnlyzer3.2.8已发布! 地址: http ... -
关于Lucene3.0.1 QueryParser的一个错误
2010-05-21 21:33 2128表达式1: 引用 id:"1231231" ... -
发布 IK Analyzer 3.2.3 稳定版 for Lucene3.0
2010-05-15 14:13 6715IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3402转载自:http://nginx.org/en/docs/wi ... -
发布IKAnnlyzer3.2.0稳定版 for Lucene3.0
2009-12-07 09:27 9573最新3.2.5版本已经推出,http://linliangyi ... -
在Tomcat下以JNDI方式发布JbossCache
2009-12-04 10:57 3827前言: 看过JbossCache的开发手册,发现在Jb ... -
Spring AOP小例子
2009-11-16 10:35 3403PS: 要注明一下,这个是转载滴,之前漏了说鸟,汗死 这里给 ... -
ActiveMQ 5.X 与 Tomcat 集成一(JNDI部署)
2009-11-10 15:15 5648原文地址:http://activemq.apache.org ... -
发布IKAnalyzer中文分词器V3.1.6GA
2009-11-08 23:10 11854IKAnalyzer3.2.0稳定版已经发布,支持Lucene ...
相关推荐
例如,IK分词器版本3.1.3GA及先前版本兼容Lucene 2.9.1及之前版本,而3.1.5GA及之后的版本则兼容Solr 1.3和1.4。IKAnalyzer2012还兼容Lucene 3.3以上版本,并为Solr 1.4提供了接口实现。 安装部署方面,IKAnalyzer...
标题:"IKAnalyzer中文分词器v2012使用手册" 所述的知识点包括: IKAnalyzer是一款开源的基于Java语言开发的轻量级中文分词工具包,最早版本于2006年12月发布。作为一个文本分析组件,它最初是作为开源项目Lucene的...
**IKAnalyzer中文分词器V3.2使用详解** IKAnalyzer是一款开源的、适用于Java环境的中文分词器,主要用于解决在信息检索、文本挖掘等领域中遇到的中文处理问题。这款分词器的设计目标是提高分词的准确率,并且具有...
### IKAnalyzer中文分词器V3.1.6:深入解析与使用指南 #### 一、IKAnalyzer3.0概述 IKAnalyzer是一个基于Java语言开发的高性能中文分词工具包,自2006年发布以来,已历经多次迭代升级。起初作为开源项目Lucene的一...
**IKAnalyzer中文分词** IKAnalyzer是一款开源的、基于Java实现的中文分词工具,它在中文信息处理领域有着广泛的应用。该工具最初由尹军平(IkGuo)开发,设计目标是提供一个轻量级、高效能的中文分词引擎,用于...
**IKAnalyzer中文分词器V3.2.0详解** IKAnalyzer是一款专为中文处理设计的开源分词器,广泛应用于搜索引擎、信息检索系统、文本挖掘等领域。它以高效、灵活和准确的特性,在Java开发的中文应用中占有重要地位。V...
### IKAnalyzer中文分词器V2012_U5使用手册关键知识点解析 #### 1. IKAnalyzer2012介绍 IKAnalyzer是一款基于Java语言开发的开源中文分词工具包,自2006年12月发布1.0版以来,已历经多次重大升级。最初作为Lucene...
### IKAnalyzer中文分词器V2012使用手册知识点详解 #### 1. IKAnalyzer2012介绍 IKAnalyzer是一款开源的、基于Java语言开发的轻量级中文分词工具包。自2006年12月发布1.0版以来,已历经多次迭代,至2012版本时,它...
### IKAnalyzer中文分词器V3.1.1使用手册 #### 1. IKAnalyzer 3.1.1 介绍 IKAnalyzer是一个基于Java语言开发的开源轻量级中文分词工具包。自2006年12月发布1.0版本以来,IKAnalyzer已经经历了多个版本的迭代,不断...
**IK Analyzer中文分词器详解** IK Analyzer是一个在IT领域广泛应用的开源项目,它专注于Java平台上的中文分词处理。中文分词是自然语言处理(NLP)中的基础任务,对于信息检索、文本挖掘、机器翻译等领域至关重要...
- **IKAnalyzer中文分词器V2012使用手册.pdf**:这是一份详细的操作指南,提供了如何使用IKAnalyzer的步骤、配置说明和常见问题解答,对于初学者来说非常有用。 - **IK Analyzer 2012FF_hf1_source.rar**:这是IK...
IK Analyzer 是一个开源的、基于Java实现的中文分词器,专为全文检索或信息提取等任务设计。它由尹力(Wu Li)在2006年发起,最初是为了改善Lucene的中文处理能力。自那时起,IK Analyzer已经发展成为一个广泛使用的...
IKAnalyzer是一款广泛应用于Java环境中的开源中文分词器,它主要设计用于提高搜索引擎的性能,同时也适用于其他需要中文处理的领域。v3.2.0是该分词器的一个稳定版本,提供了良好的分词效果和较高的性能。在这个版本...
IK-Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包,也就是可以将一串中文字符分割成一个个的词组或者字词 文件中包含分词工具 ikanalyzer-2012_u6.jar 中文分词配置 IKAnalyzer.cfg..xml
提示:IKAnalyzer中文分词器支持Lucene6.0以上,IKAnalyzer中文分词器支持Lucene6.0以上。
IKAnalyzer非常易用的java分词工具。可以自定义扩展词汇。 这个是一个完整的java项目demo。直接可以用,不用再去google下载了。添加了几个自定义词汇,测试好用。 运行ika.java里的main方法即可
ikanalyzer中文分词支持lucene7.1.0是一个针对Lucene搜索引擎的中文分词扩展,由林良益先生开发,旨在提供高效、精准的中文词汇拆解功能。Lucene是一个开源全文检索库,它提供了索引和搜索文本的强大工具。然而,...
### IKAnalyzer中文分词器V3.1.3使用手册概览 #### 1. IKAnalyzer3.0介绍 IKAnalyzer是一款专为中文文本处理设计的高性能分词工具包,自2006年首次发布以来,已历经多次迭代升级至V3.1.3版本。最初作为Lucene项目...