java 操作solr api实例 非http请求方式

第一步:在tomcat的conf目录下新建Catalina目录,在Catalina目录下新建localhost目录,在localhost目录下新建solr.xml 

solr.xml内信息如下: 
Java代码   收藏代码
  1. <Context docBase="/Volumes/mac_2/data/apache-solr-1.4.0.war" debug="0" crossContext="true" >  
  2.    <Environment name="solr/home" type="java.lang.String" value="/Volumes/mac_2/data/solr" override="true" />  
  3. </Context>                                                        


docBase 和 value的内容请根据自己情况来定义。 

data的zip我上传了。。下载地址:http://dl.iteye.com/topics/download/4027b059-1173-3660-9d71-f63d6491372f 


第二步: 
保证tomcat链接时是utf-8.。。在tomcat的conf目录下找到server.xml,,, 
在原有基础上增加 URIEncoding="UTF-8" 

Java代码   收藏代码
  1. <Connector executor="tomcatThreadPool"  
  2.                port="8080" protocol="HTTP/1.1"   
  3.                connectionTimeout="20000"   
  4.                redirectPort="8443" URIEncoding="UTF-8" />    

第三步: 
浏览器打开http://localhost:8080/solr/admin,看到管理界面就是ok拉。 
测试下分词:打开http://localhost:8080/solr/admin/analysis.jsp 
在Field这里选择 type,,,对应的输入text_cn 
Field value这里两个选择框都打钩,,输入任意中文 
点Analyze,,就能看到使用的分词和它如何分词的。 


第四步 一个简单的java调用

Java代码   收藏代码
  1. /* 
  2.  * To change this template, choose Tools | Templates 
  3.  * and open the template in the editor. 
  4.  */  
  5.   
  6. package solrjexample;  
  7.   
  8. /** 
  9.  * 
  10.  * @author liuping 
  11.  */  
  12. import org.apache.solr.client.solrj.SolrServer;  
  13. import org.apache.solr.client.solrj.SolrServerException;  
  14. import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;  
  15. import org.apache.solr.client.solrj.response.QueryResponse;  
  16. import org.apache.solr.common.SolrDocument;  
  17. import org.apache.solr.common.params.ModifiableSolrParams;  
  18. import java.net.MalformedURLException;  
  19.   
  20.   
  21. public class Main {  
  22.   public static void main(String[] args) throws MalformedURLException, SolrServerException {  
  23.   
  24.     SolrServer server = new CommonsHttpSolrServer("http://localhost:8080/solr");  
  25.   
  26.     ModifiableSolrParams params = new ModifiableSolrParams();  
  27.     // 查询关键词  
  28.     params.set("q""2010");  
  29.     // 分页,,start=0就是从0开始,,rows=5当前返回5条记录,,,第二页就是变化start这个值为5就可以了。  
  30.     params.set("start"0);  
  31.     params.set("rows"5);  
  32.   
  33.     // 排序,,如果按照id 排序,,那么将score desc 改成 id desc(or asc)  
  34.     params.set("sort""score desc");  
  35.   
  36.     // 返回信息  * 为全部  这里是全部加上score,如果不加下面就不能使用score  
  37.     params.set("fl""*,score");  
  38.       
  39.     QueryResponse response = server.query(params);  
  40.     // 搜索得到的结果数  
  41.     System.out.println("Find:"+ response.getResults().getNumFound()+"\n\n");  
  42.   
  43.     // 输出结果  
  44.     for(SolrDocument doc:response.getResults())  
  45.     {  
  46.         System.out.println("id: " + doc.getFieldValue("id").toString());  
  47.         System.out.println("title: " + doc.getFieldValue("title").toString()+"\n");  
  48.     }  
  49.   }  
  50.     
  51. }  

第五步:php调用

php的code最短 

在solrconfig.xml将这两个注释去掉 
<queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/> 
<queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/> 

PHP  发挥PHP数组信息 

Php代码   收藏代码
  1. $code = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=php');  
  2. eval("\$result = " . $code . ";");  
  3. print_r($result);  



PHPS  返回序列化信息,注意:一些中文可能在反序列化时丢失信息。 
Php代码   收藏代码
  1. $serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');  
  2. $result = unserialize($serializedResult);  
  3. print_r($result);  

你可能感兴趣的:(java,tomcat,PHP,api,Solr,templates)