`

solr 4.3的一些错误解决方法

    博客分类:
  • Java
 
阅读更多

在去年时候学习使用了solr4.0,现在solr版本最新已经到了4.3了,前两天因为工作需要在一台服务器上面新安装solr,但是生产环境是4.0,不过想到是内部测试用的,且主要功能就是写入,删除,搜索,与程序上面没有太多的深入开发,于是还是安装了最新的4.3版本

解压安装启动后,就可以了;这时需要添加collection,添加的collection配置需要与生产环境保持一致,于是复制默认的collection1 的配置信息作为新的collection

复制完成,新的collection events 也添加完成;但是加载时总是报错不能正确加载solrconfig.xml信息,也知道schema.xml等数据肯定是要修改的,schema.xml配置信息修改完成后还是有这样的问题,在往solr写入数据时又再次报错

undefined filed message,但是message字段确实已经配置好了;检查之后再次重启solr,查看刚才的events 直接显示 “There exists no core with name “events””

这时去查看日志,显示信息

1 Caused by: org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.
2 at org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:218)
3 at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:616)
4 at org.apache.solr.core.SolrCore.<init>(SolrCore.java:816)
5 ... 34 more
6 Caused by: java.lang.NumberFormatException: For input string: "MA147LL/A"
7 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
8 ... 36 more
9 ERROR - 2013-05-22 16:07:06.752; org.apache.solr.common.SolrException; org.apache.solr.common.SolrException: Error CREATEing SolrCore 'events': Unable to create core: events
10 at org.apache.solr.handler.admin.CoreAdminHandler.handleCreateAction(CoreAdminHandler.java:524)
11 ...

 

1 ERROR - 2013-05-22 16:48:46.272; org.apache.solr.common.SolrException; org.apache.solr.common.SolrException: ERROR: [doc=100946] unknown field 'message'
2 at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:313)
3 at org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:73)

正在排查中是,同事Y看到了,直接把solr 默认的collection1 改名为 events ,再次刷新直接挂了

There are no SolrCores running. Using the Solr Admin UI currently requires at least one SolrCore.

再次去查找这个问题,很快找到

http://stackoverflow.com/questions/13295208/i-unloaded-the-default-solr-collection-by-mistake-from-the-solr-admin-ui

编辑example/solr/solr.xml配置文件

可以看到已经变为

<core name="events" instanceDir="events" />

改为

<core name="collection1" instanceDir="collection1" />

保存,重启solr即可;

分析为什么出现这个问题,events collection的配置是错误的,solr初始化所有collection时跳过了events,而默认的collection1又改为了events则使用的是events目录下的配置信息了,

而这个配置信息又是错误的,所以solr admin 默认为没有 cores 的;修复过程中需要手动去修改配置文件,同事Y打呼用户体验太不友好了,不过我说Solr Admin用户体验很好啊,很早就不支持IE6了

现在又回到了上面的那个错误,org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.

不能初始化,也不能添加events collection core,继续google,终于找到一篇提示的文章

https://coderwall.com/p/kwvxhq

Note that if you have enabled the QueryElevationComponent in solrconfig.xml it requires the schema to have a uniqueKey of typeStrField. It cannot be, for example, an int field.

Otherwise, you will get exception like:

java.lang.NumberFormatException: For input string: "MA147LL/A"

大意就是如果你开启了 QueryElevationComponent 功能,但是schema 的uniqueKey类型又不是 string,则报如下错误

java.lang.NumberFormatException: For input string: "MA147LL/A" 这个不就是我的日志里面的那个错误信息么, 于是编辑example/solr/events/conf/solrconfig.xml配置文件

搜索QueryElevationComponent关键字,可以看到如下,果然有这个信息

1 <!-- Query Elevation Component
2  
3 http://wiki.apache.org/solr/QueryElevationComponent
4  
5 a search component that enables you to configure the top
6 results for a given query regardless of the normal lucene
7 scoring.
8 -->
9 <searchComponent name="elevator" >
10 <!-- pick a fieldType to analyze queries -->
11 <str name="queryFieldType">string</str>
12 <str name="config-file">elevate.xml</str>
13 </searchComponent>

http://wiki.apache.org/solr/QueryElevationComponent 查看一下,类似于关键字搜索后,一些项的配置置顶显示 比如百度搜索某个关键字时,搜索框下面的推广,广告相关信息总是被置顶显示

要配置启用这项组件,需要配置elevate.xml,同样是位于example/solr/events/conf/目录下

Elevated query results are configured in an external .xml file determined by the config-file argument. An elevate.xml file may look like this:

<elevate>

 <query text="AAA">
  <doc id="A" />
  <doc id="B" />
 </query>

 <query text="ipod">
  <doc id="A" />

  <!-- you can optionally exclude documents from a query result -->
  <doc id="B" exclude="true" />
 </query>

</elevate>

For the above configuration, the query “AAA” would first return documents A and B, then whatever normally appears for the same query. For the query “ipod”, it would first return A, and would make sure that B is not in the result set.

Note: The uniqueKey field must currently be of type string for the QueryElevationComponent to operate properly. 这就是答案了,uniquekey必须是string类型;目前我们项目中没有用到这项功能,所以可以选择注释不启用

1 <!--
2 <searchComponent name="elevator" >
3 <!-- pick a fieldType to analyze queries -->
4 <str name="queryFieldType">string</str>
5 <str name="config-file">elevate.xml</str>
6 </searchComponent>
7 -->

重启之后,没有初始化失败的错误了,再次往solr加入数据又有一个错误信息 undefined field text

1 ERROR - 2013-05-22 17:59:51.107; org.apache.solr.common.SolrException; org.apache.solr.common.SolrException: undefined field text
2 at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1211)
3 at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getWrappedAnalyzer(IndexSchema.java:425)
4 at org.apache.lucene.analysis.AnalyzerWrapper.initReader(AnalyzerWrapper.java:81)
5 at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:132)

google 得到结果,就是默认字段需要替换的问题,编辑 example/solr/events/conf/solrconfig.xml 检索到text内容

 <lst name="defaults">
 <str name="echoParams">explicit</str>
 <int name="rows">10</int>
 <str name="df">text</str>
 </lst>

因为solrconfig.xml等配置文件时从collection1复制过来的,默认的default字段匹配是text,所以目前改为我们项目所用到的字段值message 保存文件,重启solr,写入数据没有问题了,search也正常的有数据内容返回了

版本的不同,配置文件内容也会做一些变动与修改;所以可能需要修改的配置不仅仅只是与项目search有关的内容,还有版本与版本之间,新版本默认启用的模块所需的配置有关;还有一点,多看日志,多用Google!

分享到:
评论

相关推荐

    solr4.3源代码一

    Solr4.3是Apache Solr的一个早期版本,它是一个基于Lucene的全文搜索服务器,提供了高可配置、可扩展的搜索和分析功能。Solr4.3源代码的获取通常是为了深入理解其内部工作原理,进行定制开发或优化。在你提供的信息...

    solr4.3源代码二

    在你提供的资料中,"solr4.3源代码二"显然是Solr 4.3版本的源代码包,这将包含Solr的核心组件和相关配置。通过SVN下载的源代码表明,你可以追踪代码的历史版本,这对于理解和解决潜在问题非常有帮助。 首先,我们来...

    solr4.3-ik-analyzer

    solr4.3 分词器 把IKAnalyzer.jar放到solr\WEB-INF\lib下。

    ik-analyzer-5.01-for solr4.3.jar

    ik-analyzer-5.01-for solr4.3.jar

    solr4.3的IK分词器

    最新版solr4.3的IK分词器,中文分词效果良好!对付一般的大众分词没有问题

    Solr4.3 版本中文分词组件

    最高版本的 solr 中文分词配置 , 小弟已经测试过了 里面的 jar 要到各官网上下载

    ik4solr4.3:ik分词器for Solr4.3,支持4.4,二进制不用修改也支持4.6,不放心可以改下POM中的依赖

    solr4.3的ik分词器(改了一些smart分词算法。使用maven编译),隔壁有我写的包 支持从solr自己的环境中获取自定义词典(使用solr的ResourceLoader,只需要把字典文件放到对应索引的conf目录里) 增加一个定时更新类...

    solr4.3.0稳定jar包

    solr4.3.0中所有的jar包,稳定,快速搜索引擎

    solr乱码解决方法

    solr乱码解决方法,excel文件,贴图说明。

    解决solr启动404问题

    在一些情况下,端口冲突也可能导致404错误。Solr默认使用8983端口,确保没有其他服务占用该端口。如果需要更改,可以在启动脚本中设置`SOLR_PORT`环境变量。 如果你使用的是Docker或其他容器化部署,检查容器的启动...

    solr43相关jar包

    solr4.3相关的jar包,包含httpclient-4.3.4.jar、httpcore-4.3.2.jar、httpmime-4.3.1.jar、IKAnalyzer2012.jar、slf4j-api-1.6.6.jar、slf4j-log4j12-1.6.6.jar、solr-solrj-4.3.0.jar、zookeeper-3.4.5.jar等

    企业级搜索引擎solr教程

    tomcat7下实现solr4.3的部署与配置,配置中文服务器。通过solrj实现索引的创建,修改,删除,查询。并实现httpclienct创建、修改索引,检索信息等。

    PHP4.3 mongo memcache solr redis.dll扩展包.zip 以及配置方法

    本文将详细讨论PHP4.3版本中与mongo、memcache、solr和redis相关的DLL扩展包及其配置方法。 首先,PHP4.3是PHP的一个较老版本,发布于2002年,支持多种数据库和缓存技术。MongoDB是一个NoSQL数据库,它提供了高性能...

    solr更换memcached缓存的方法

    Solr,全名Apache Solr,是Apache软件基金会的一个开源项目,主要用来处理全文检索、分布式搜索和实时分析。在大型网站和企业级应用中,Solr常常被用来提升搜索性能和效率。本文将深入探讨如何在Solr中更换默认的...

    php4.3 mongo memcache solr redis.dll扩展包以及配置方法

    在标题和描述中提到的"php4.3 mongo memcache solr redis.dll扩展包"涉及到四个重要的技术:PHP 4.3、MongoDB、Memcached和Solr,以及Redis的DLL扩展。下面我们将详细探讨这些技术及其在PHP中的配置方法。 首先,...

    solr问题及解决

    ### Solr问题及解决方案 ...通过以上五个方面的详细解答,我们不仅解决了Solr在使用过程中的一些常见问题,还深入理解了这些问题背后的原理和机制,这对于提高Solr系统的稳定性和性能有着重要的意义。

    lucene4.3.0+IK Analyzer2012FF

    - **API的稳定性和兼容性**:对API进行了一些调整,增强了向前兼容性。 2. **IK Analyzer 2012FF**: - **IK Analyzer** 是一个针对中文的开源分词工具,专为Lucene等搜索引擎设计。它旨在提高中文分词的准确性和...

    Apache Solr(solr-8.11.1.tgz)

    Apache Solr 是一个开源的全文搜索引擎,由Apache软件基金会维护,是Lucene项目的一部分。它提供了高效、可扩展的搜索和导航功能...熟悉这些知识点,可以帮助你更好地利用Apache Solr构建高性能的企业级搜索解决方案。

    solr的学习

    ### Solr 学习知识点详解 #### 一、Solr 概述 - **定义**:Solr 是 Apache 下的一个顶级开源项目...Solr 作为一款企业级的搜索引擎,凭借其强大的功能和灵活性,在大数据时代的企业搜索解决方案中占据着重要的地位。

    基于Solr的多表join查询加速方法

    Solr,全称为Apache Solr,是一款开源的全文搜索引擎,被广泛应用于企业级搜索解决方案中。它基于Lucene库,提供了高效、可扩展的搜索和分析能力。在处理多表join查询时,传统的关系型数据库如MySQL等通常能很好地...

Global site tag (gtag.js) - Google Analytics