JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误

问题一:出现控制台坏的响应错误一Bad request

控制台出现错误如下:

Bad Request

request: http://hostIP:8983/solr/update?wt=javabin&version=1

解决方法:

出现以上错误的原因是,solr服务器上配置的Field和javabean提交的Field不能对应,

导致solr服务器找不到域,拒绝访问。

打开SOLR_HOME下的conf文件夹找到schema.xml文件,在其中添加对应的域。

例如以下代码添加了:title,URL,text三个域:


 

问题二:为Solr服务器添加IKanalyzer中文分词组件

中文分词不支持

在进行中文搜索和建立索引的过程中,不能正确拆分中文。

解决方法:

一.把IKAnalyzer3.2.8.jar放到

apache-tomcat-6.0.32/webapps/solr/WEB-INF/lib下面

二.修改配置文件:SOLR_HOME/conf/schema.xml


问题三:Solr服务器不能搜索中文,出现中文乱码

solr中文乱码

在solr中搜索中文时出现中文乱码

解决方法:

主要是修改WEB容器的编码格式,以tomcat为例,需要修改tomcat默认的编码值为UTF-8。

具体为修改,将TOMCAT_HOME下conf文件夹下的server.xml文件内的如下代码:

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

修改为:

<Connector port="8983" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" URIEncoding="UTF-8"/>

其中修改了PORT:8080为8983,,主要是SOLR服务器的默认端口为8983,添加了tomcat容器的默认编码为:URIEncoding="UTF-8"。

 服务器端在获取数据的时候最好在获取数据之前加上如下一句:

//下面这句很重要确保中文不出现乱码
  request.setCharacterEncoding("UTF-8"); 

然后再获取数据:

 String title=request.getParameter("TITLE");
  String URL=request.getParameter("URL");
  String text=request.getParameter("TEXT");

问题四:Solr服务器的默认索引位置

Solr默认的索引存放位置为SOLR_HOME下的data/index下,

如果想存在特定的位置,就要修改索引主目录。

解决方法:

修改SOLR_HOME下conf文件夹下solrconfig.xml文件,改为:

<dataDir>${solr.data.dir:/home/solrindex}</dataDir>

则index的主要存储目录改为:/home/solrindex。

 

问题五:SOLR服务器的SOLR_HOME有什么作用

新建Tomcat 6.0\conf\Catalina\localhost\solr.xml:

<Context docBase="TOMCAT_HOME/webapps/solr.war" debug="0" crossContext="true" >

   <Environment name="solr/home" type="java.lang.String" value="SOLR_HOME" override="true" />

</Context>

 其中solrhome的作用是在浏览器中访问的地址和solr各种配置文件放置的主要目的地。

 

      问题六:采用dataimport从数据库导入建索引,数据库中的中文是GBK编码格式,建索引时会乱码。怎么解决? 

      数据库和部署Solr服务器的容器最好统一使用utf8编码,如果数据库中的数据是GBK编码,那么你的WEB容器编码还有solr配置文件中的编码配置都需要修改为GBK编码。在查询结果显示的地方也要多编码进行修改。Solr的默认编码格式为utf8,最好还是采用这个编码格式。如果使用eclipse开发,注意IDE的编码设置。

 

 

(1)schema.xml中一些fieldType的属性,比如multiValued中,如何为textFiled,multivalued为 true时是多值字段,也就是说他里边存的是一个list<string>在添加索引的时候要注意。设为false的话对 应javabean为<string>;

(2)tomcat一定要设置server.xml中的字符集为URIEncoding="UTF-8",否则中文会出现乱码问题;

(3)在添加IK中文分词到solr时,首先根据solr版本选择和是的 IK 版本,然后将ik的jar包放到web_info的lib下,配置schemal.xml的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>

其中isMaxWordLength为true是最大分词原则;

如果要对ik的词库进行扩展,注意:要在web_INF下建立一个classes(如果没有的话)用来放置ik附带的IKAnalyzer.cfg.xml,ext.dic,和stopwords.dic,才能正确的加载扩展词库.

(4)在solrj 4.0中,CommonHttpSolrServer已经废弃了,改为httpServer代替

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值