`
shingo7
  • 浏览: 18636 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

compass2.02 + paoding2.04 + Lucene2.2 构建全文索引的问题

阅读更多

今天接到客户新的需求,要求在分词上接近,现实更人性化,于是我将原先来分词器IK_CAnalyzer 换成最新的 PaodingAnalyzer,  不过.....这其中的曲折太多了...

 

首先,我下载了最新的paoding包 paoding-analysis-2.0.4-alpha2,将jar包导入classpath,将词典导入到classpath我设置好paoding.dic.home

并将compass的sping配置做了修改,如下

修改前:

<prop key="compass.engine.analyzer.default.type">org.mira.lucene.analysis.IK_CAnalyzer</prop>

修改后:

<prop key="compass.engine.analyzer.default.type">net.paoding.analysis.analyzer.PaodingAnalyzer</prop>

 

启动,报错如下

java.lang.VerifyError: Cannot inherit from final class 
        at java.lang.ClassLoader.defineClass1(Native Method) 
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620) 
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
        at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1412­) 
        at com.caucho.loader.DynamicClassLoader.findClassImpl(DynamicClassLoader.java:­1282) 
        at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:­1184) 
        at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1128­) 
        at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1113­) 
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 
        at net.paoding.analysis.analyzer.impl.MostWordsTokenCollector.collect(MostWord­sTokenCollector.java:41) 
        at net.paoding.analysis.analyzer.PaodingTokenizer.collect(PaodingTokenizer.jav­a:146) 
        at net.paoding.analysis.knife.CombinatoricsKnife.doCollect(CombinatoricsKnife.­java:258) 
        at net.paoding.analysis.knife.CombinatoricsKnife.collectIfNotNoise(Combinatori­csKnife.java:227) 


 

意思是说我继承了一个final类,这个final类是哪个类呢,是 lucene-core.jar下面的org.apache.lucene.org.apache.lucene.analysis.Token类,这个类被声明为final,但paoding分词会继承这个类,怎么办呢,我查看了下载的paoding-analysis-2.0.4-alpha2包,里面的lucene jar包是2.2版本的,于是我将我工程的lucene版本升至2.2.

 

启动,又报错,如下

java.lang.NoSuchMethodError: org/apache/lucene/document/Document.add(Lorg/apache/lucene/document/Field;)V

找不到方法,Lucene从2.0版本后Document增加Field时采用的是new Field(...)方法,而我的compass.jar是1.0版本的,于是我又去下了个最新的compass.jar 2.02版本的.

 

启动,又报错

找不到 org.compass.spring.device.hibernate.SpringHibernate3GpsDevice

看了一下jar包里的类,这个类改成org.compass.spring.device.hibernate.dep.SpringHibernate3GpsDevice了...

 

再次启动后终于正常了...

 

2
0
分享到:
评论
3 楼 952222 2009-08-01  
请问一个问题,为什么我用IK还有paoding的时候,搜索“互联网”,“和服务”这类词语的时候,就会有
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


起 因

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3
org.apache.nutch.searcher.FetchedSegments.getSummary(FetchedSegments.java:285)
org.apache.nutch.searcher.NutchBean.getSummary(NutchBean.java:325)
org.apache.jsp.searchs_jsp._jspService(searchs_jsp.java:292)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

这个错误呢?这类词语都是可以拆分成两个词的。如“互联网”拆成“互联”和“联网”
2 楼 shingo7 2008-11-03  
卡拉阿风 写道

prop key="compass.engine.analyzer.default.type 这里的default是默认的吧? 据说IK_CAnalyzer速度慢点。我也用Paoding的 LZ学习多久了?

呵呵,没多久呢,在搜索这一块我还是个新手,呵呵,还在慢慢摸索.
1 楼 卡拉阿风 2008-10-31  
prop key="compass.engine.analyzer.default.type
这里的default是默认的吧?
据说IK_CAnalyzer速度慢点。我也用Paoding的
LZ学习多久了?

相关推荐

Global site tag (gtag.js) - Google Analytics