solr啟動時候,報如下異常:
[java] view plain copy
- SEVERE: org.apache.solr.common.SolrException?
- ??????? at org.apache.solr.core.SolrCore.<init>(SolrCore.java:600)?
- ??????? at org.apache.solr.core.CoreContainer.create(CoreContainer.java:480)?
- ??????? at org.apache.solr.core.CoreContainer.load(CoreContainer.java:332)?
- ??????? at org.apache.solr.core.CoreContainer.load(CoreContainer.java:216)?
- ??????? at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161)?
- ??????? at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96)?
- ??????? at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)?
- ??????? at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)?
- ??????? at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)?
- ??????? at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)?
- ??????? at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)?
- ??????? at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)?
- ??????? at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)?
- ??????? at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)?
- ??????? at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)?
- ??????? at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)?
- ??????? at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)?
- ??????? at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)?
- ??????? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)?
- ??????? at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)?
- ??????? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)?
- ??????? at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)?
- ??????? at org.apache.catalina.core.StandardService.start(StandardService.java:516)?
- ??????? at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)?
- ??????? at org.apache.catalina.startup.Catalina.start(Catalina.java:593)?
- ??????? at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)?
- ??????? at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)?
- ??????? at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)?
- ??????? at java.lang.reflect.Method.invoke(Method.java:597)?
- ??????? at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)?
- ??????? at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)?
- Caused by: org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.?
- ??????? at org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:202)?
- ??????? at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:527)?
- ??????? at org.apache.solr.core.SolrCore.<init>(SolrCore.java:594)?
- ??????? ... 32 more?
- Caused by: java.lang.NumberFormatException: For input string: "MA147LL/A"
- ??????? at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)?
- ??????? at java.lang.Integer.parseInt(Integer.java:449)?
- ??????? at java.lang.Integer.parseInt(Integer.java:499)?
- ??????? at org.apache.solr.schema.TrieField.readableToIndexed(TrieField.java:291)?
- ??????? at org.apache.solr.handler.component.QueryElevationComponent$ElevationObj.<init>(QueryElevationComponent.java:119)?
- ??????? at org.apache.solr.handler.component.QueryElevationComponent.loadElevationMap(QueryElevationComponent.java:264)?
- ??????? at org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:186)?
- ??????? ... 34 more?
我的solr版本是3.6.1。
通過查看異常堆棧 :Caused by: org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.和Caused by: java.lang.NumberFormatException: For input string: "MA147LL/A"
問題定位在初始化QueryElevationComponent組件時失敗。在solrconfig.xml文件中找到QueryElevationComponent的配置項:
[java] view plain copy
- <searchComponent name="elevator" class="solr.QueryElevationComponent">?
- <!--? pick a fieldType to analyze queries? -->?
- <str name="queryFieldType">string</str>?
- <str name="config-file">elevate.xml</str>?
- </searchComponent>?
- <!--?
- A request handler for demonstrating the elevator component??
- -->?
- <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">?
- <lst name="defaults">?
- <str name="echoParams">explicit</str>?
- <str name="df">text</str>?
- </lst>?
- <arr name="last-components">?
- <str>elevator</str>?
- </arr>?
- </requestHandler>?
從配置文件得知在初始化QueryElevationComponent的時候會去加載conf目錄下的elevate.xml文件,所以打開elevate.xml文件看看:
[java] view plain copy
- <elevate>?
- <query text="foo bar">?
- ? <doc id="1" />?
- ? <doc id="2" />?
- ? <doc id="3" />?
- </query>?
- <query text="ipod">?
- ?? <doc id="MA147LL/A" />? <!-- put the actual ipod at the top -->?
- ?? <doc id="IW-02" exclude="true" /> <!-- exclude this cable -->?
- </query>?
- </elevate>?
你會發現有一個id="MA147LL/A"和id="IW-02"的配置項,問題就在于id的值為"MA147LL/A"和IW-02,它是string類型,當我們把所<uniqueKey> id 定義為long或int等number類型時,自然會報以上異常。
這是一個solr的bug: https://issues.apache.org/jira/browse/SOLR-2997
有兩種解決方案:
(一)將id="MA147LL/A" 改為id="1",將id="IW-02"改為id="2",將其值設為整形。
(一)在solrconfig.xml文件中注釋掉以下代碼:(QueryElevationComponent組件對于初學者一般上不用,所以可以先注釋掉)
[java] view plain copy
- <searchComponent name="elevator" class="solr.QueryElevationComponent">?
- <!--? pick a fieldType to analyze queries? -->?
- <str name="queryFieldType">string</str>?
- <str name="config-file">elevate.xml</str>?
- </searchComponent>?
- <!--?
- A request handler for demonstrating the elevator component??
- -->?
- <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">?
- <lst name="defaults">?
- <str name="echoParams">explicit</str>?
- <str name="df">text</str>?
- </lst>?
- <arr name="last-components">?
- <str>elevator</str>?
- </arr>?
- </requestHandler>?
PS: QueryElevationComponent組件用于solr實現競價排名,接下來會寫一篇關于solr競價排名的文章。
Defining as a "long" or "int" type throws an error on startup
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
