微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

学习使用solr时遇到的一些问题,记录

问题1:

一开始我在这个网站实践http://wiki.apache.org/solr/DIHQuickStart#Index_the_fields_in_different_names

结果到了第五步(Step 5 : Run the command http://solr-host:port/solr/dataimport?command=full-import.)就出现了这样的错误

HTTP ERROR 404

Problem accessing /solr/dataimport. Reason:

    NOT_FOUND


Powered by Jetty://


其实是因为之前在启动solr的时候弄错了,我之前是用"java -jar start.jar"来启动的,但是我自己建的文件目录是这样的:


在XiaoLongTest里面有“README.txt”文件,打开它,它会告诉你该怎么做。另外,当你成功启动后发现没有你自己创建的文件怎么办:


打开“XiaoLongTest”里面的solr.xml跟着他的模样插入一条就好了,依葫芦画瓢。然后在启动一下就有了。


问题2(在data-config.xml里面配置数据源的问题):

如果你用的sqlserver数据库,那么数据源该这样配置:

<dataSource type="JdbcDataSource" 
driver="com.microsoft.sqlserver.jdbc.sqlServerDriver" 
url="jdbc:sqlserver://localhost:1433;DatabaseName=test" 
user="xx" 
password="xx"/>

如果用的是postgres(大象)数据库,那么就这样配置:

<dataSource name="JdbcDataSource"
driver="org.postgresql.Driver"
       url="jdbc:postgresql://localhost:5433/iclass-dev" (端口号自己看)
       user="xxx"
password="xxx"
/>

驱动包要用复制粘贴的方式方到相应的lib里面。


问题 3(给sorl设定IK分词器)  

schema.xml里面不是有很多的fieldType吗,其中class为solr.TextField的类型是可以被分词器分词的,我在一个fieldType名字是“text”的类型里面去设置。ik分词器需要到网上去下载,那下什么版本的其实和你的solr版本有关,如果您使用的是Solr1.3或者v2.9之前的Lucene,请下载IK Analyzer3.1.6GA使用! IK Analyzer3.2.X仅支持Lucene3.0以上版本。

   我下载了最新的版本的ik,那怎么配置到schema.xml里面呢?其实下载的那个包里面都有一个pdf是教程,照里面的做就好了,配置好了后,在把你下载下来的ik的根目录下面的一个Jar文件,复制到相应文件的Lib下面,就好了。


问题 4(org.apache.solr.common.solrException: Document [null] missing required field: id) 

<field name="id" type="long" indexed="true" stored="true" required="true" />后面的required去掉。


问题 5(Could not open the editor: Resource is out of sync with the file system)  

我在打开一个文件的时候出现这个错误

当右击default.properties打开时,出现下图错误

解决方法:右击工程,Refresh一下就好了。

原因:Usually happens when some files are edited outside of eclipse。


问题 6(Delta Import Failed)

我在solr里面进行增量导入的时候,出现了这样的错误

  


我的data-config.xml里面的document是这样写的:

<document>
		<entity name="Member"  query="select id,fullName,dtype,avatarUrl from Member where isDeleted=false" 
			deltaQuery="select id from Member where lastModifyTime > '${dataimporter.last_index_time}' and isDeleted=false">
			<!-- deltaimportQuery="select id,avatarUrl from Member where id = '${dataimporter.delta.id}'"  -->
		</entity>
<document>

现在问题解决了,原因就是没有在里面加上 pk="id" (其中这个id是和下面的deltaQuery里面的字段id一样)

正确的应该是这样的:

<document>
		<entity name="Member" pk="id" query="select id,avatarUrl from Member where id = '${dataimporter.delta.id}'"  -->
		</entity>
<document>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐