问题一:出现控制台坏的响应错误一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代替