天天看點

solr配置IKAnalyzer抛出ClassNotFoundException

    這個問題搞了很久,在QQ群上問了很久,關鍵很氣人的是我居然被群主給開了。我也是醉了。我不知道我哪裡得罪了那個solr群的群主。

    廢話不多說。抛出的異常如下:

solr配置IKAnalyzer抛出ClassNotFoundException

剛開始一直認為是沒有找到類,也就相當于沒找到jar包。但是我的jar包是放到WEB-INF/lib目錄中的。我又認為是IK分詞器的版本問題,又去下載下傳了新版本jar包,還是不行。然後看到solrconfig.xml中有配置jar路徑的配置,然後各種嘗試指定IKAnalyzer2012FF_u1.jar的路徑----悲催的還是找不到路徑。然後又看到http://aswang.iteye.com/blog/1240718這篇部落格,以為是缺少其他jar包,又是各種配置,重新開機。還是不行。

      。。。(好吧,根據經驗,一般鑽牛角尖是鑽不通的。我放棄了。)

     閑來無事,複習到spring的aop和ioc,需要了解反射機制,又複習了反射機制。這下了解了為什麼會抛出ClassNotFoundExeception呢?

Class<_001_Object_getClass> clazz = (Class<_001_Object_getClass>) Class.forName("priv.lirenhe._001_reflect._001_Object_getClass");//類路徑
Constructor<_001_Object_getClass> constructor = clazz.getConstructor(null);//思考參數null
_001_Object_getClass object02 = constructor.newInstance(null);
System.out.println("反射機制調用方法:"+object02.getName());
           

給構造方法傳入參數null。 但是一直抛ClassNotFoundExe?已下載下傳明白了,不僅僅隻是類路徑錯了,或者沒有那個jar包導緻的找不到類路徑,同樣也是傳入構造方法的參數 不符合要求導緻類一直找不到。頓時醒悟,那麼在配置中導緻類找不到應該就是是配置的參數缺失導緻的。

在配置IKAnalyzer的時候,我是參考别人的配置方法,别人的配置運作起來能成功,自己的不行,其實這就是因為版本問題,新版本中肯定修改了某個類,導緻僅僅注入org.wltea.analyzer.luceneIKAnalyzer時由于沒有傳參給相應的構造方法而不成功。

---------給solr注入IKAnalyzer分詞器到底具體修改了哪個類,不得而知,望指正。

是以我在schma.xml進行以下配置:

//之前的配置
<fieldType name="text_ik" class="solr.TextField">
          <analyzer  class="org.wltea.analyzer.lucene.IKAnalyze"/>
</fieldType>
           
//新配置
<fieldType name="text_ik" class="solr.TextField">
   <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
   <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
           
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price"  type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />


<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
<copyField source="item_desc" dest="item_keywords"/>
           

居然可以了,不再報錯了。

接下來就是導入資料了。

轉發請注明位址:https://blog.csdn.net/mark_lirenhe/article/details/80570963

本文如有問題,請指正。加我QQ:1017621207

繼續閱讀