`

solr使用 备忘录 草稿

 
阅读更多

一、基础配置

官网下载: http://lucene.apache.org/solr/

我下载下载版本是apache-solr-3.6.2

 

第一步:复制apache-solr-3.6.2\example\solr 文件夹到Tomcat7的根目录

第二步:复制apache-solr-3.6.2\example\webapps\solr.war Tomcat7webapps目录下

第三步:在apache-tomcat-7.0.39\conf\Catalina\localhost目录下新建solr.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>  

<Context docBase="D:/install/sorl20120423/apache-tomcat-7.0.39/webapps/solr" debug="0" crossContext="true" >  

<Environment name="solr/home" type="java.lang.String" value="D:/install/sorl20120423/apache-tomcat-7.0.39/solr" override="true" />  

<!--<Environment name="solr/home" type="java.lang.String" value="D:/tmp/lringsolr" override="true" />  -->

</Context>  

 

第四步:启动tomcat 访问:http://localhost:6666/solr/  访问到就安装成功了,6666是我tomcat的端口。

 

二、多核配置

 

多核就是多个服务 ,比如搜各个分类每个分类一个索引

1、进入apache-solr-3.6.2\example\multicore目录拷贝core0core1(名称可改任意多个不限)apache-tomcat-7.0.39\solr\目录下

2、配置apache-tomcat-7.0.39\solr\solr.xml 新增如下代码 

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

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

 

配置完成访问多核只需在原有访问路径基础上加core名称即可。

 

三、外面mysql数据导入到索引

1、在apache-tomcat-7.0.39\solr\conf 目录新建db-data-config.xml 内容如下

 

<dataConfig>  

      <dataSource type="JdbcDataSource"  

                  driver="com.mysql.jdbc.Driver"  

                  url="jdbc:mysql://地址:3306/库名"  

                  user="用户名"  

                  password="密码"/>  

      <document>  

        <entity name="id"  

                query="select id,description from d_city">  

        </entity>  

         <field column="id" name="solr_id"/>  

       <field column="description" name="solr_description"/>  

      </document>  

</dataConfig>  

2、配置apache-tomcat-7.0.39\solr\conf目录下的solrconfig.xml加入如下内容:

 

 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

    <lst name="defaults">

    <str name="config">db-data-config.xml</str>

    </lst>

  </requestHandler>

 

3、apache-solr-3.6.2\example\libjar包导入apache-tomcat-7.0.39\webapps\solr\WEB-INF\lib下 。

访问:http://localhost:6666/solr/dataimport?command=full-import 即可建立索引

 

 

 

四、索引访问代码:建立索引

import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.common.SolrInputDocument;

public class InitDocumnet {
	
	static {
		  long begin=System.currentTimeMillis() ;
		  String url = "http://localhost:6666/solr/" ;

		  try{
			  HttpSolrServer server = new HttpSolrServer( url );
			  server.setMaxRetries(1); // defaults to 0.  > 1 not recommended.
			  server.setConnectionTimeout(5000); // 5 seconds to establish TCP
			  server.setParser(new XMLResponseParser()); // binary parser is used by default
			  server.setSoTimeout(1000);  // socket read timeout
			  server.setDefaultMaxConnectionsPerHost(100);
			  server.setMaxTotalConnections(100);
			  server.setFollowRedirects(false);  // defaults to false
			  server.setAllowCompression(true);
			  for(int i=1;i<10;i++){
				  SolrInputDocument doc1 = new SolrInputDocument();
				
			       doc1.addField( "id",i+"1");
			       doc1.addField( "name", "00网传一份北京大学权威认定的中国最顶级中学名录,在网上被热炒,不少网友表示自己的母校位列其中。在这份名录中,上海上榜4所学校,分别为上海中学,华师大二附中,复旦附中,七宝中学。你的母校上榜了吗?图via清华南都"+i);
			       server.add(doc1) ;
			  }
		       server.commit() ;
		       System.out.println(System.currentTimeMillis()-begin) ;
		  }catch(Exception ex){
			  ex.printStackTrace() ;
		  }
	}
	
	static public void main(String[] args){
	   long begin=System.currentTimeMillis() ;
	   
		new InitDocumnet() ;
		System.out.println(System.currentTimeMillis()-begin) ;
	}

 

 删除索引:

import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.common.SolrInputDocument;

public class DelDocumnet {
	static {
		  long begin=System.currentTimeMillis() ;
		  String url = "http://localhost:6666/solr/" ;

		  try{
			  HttpSolrServer server = new HttpSolrServer( url );
			  
			  server.setMaxRetries(1); // defaults to 0.  > 1 not recommended.
			  server.setConnectionTimeout(5000); // 5 seconds to establish TCP
			  server.setParser(new XMLResponseParser()); // binary parser is used by default
			  server.setSoTimeout(1000);  // socket read timeout
			  server.setDefaultMaxConnectionsPerHost(100);
			  server.setMaxTotalConnections(100);
			  server.setFollowRedirects(false);  // defaults to false
			  server.setAllowCompression(true);
			  server.deleteByQuery("*:*");

              
		       server.commit() ;
		       System.out.println(System.currentTimeMillis()-begin) ;
		  }catch(Exception ex){
			  ex.printStackTrace() ;
		  }
	}
	
	static public void main(String[] args){
	   long begin=System.currentTimeMillis() ;
	   
	
		System.out.println(System.currentTimeMillis()-begin) ;
	}
}

 查询索引:

import java.util.Iterator;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;

public class SearchTest {

	public static void main(String[] args) {
		// 实例化SolrServer,以获取与solrServer的通信
		String url = "http://localhost:6666/solr/" ;
		SolrServer server = new HttpSolrServer(url);

		// 创建查询参数以及设定的查询参数
		SolrQuery query = new SolrQuery();
	query.setQuery("*:*");   
		query.setRows(2000); 
//		query.addHighlightField("webTitle");// 高亮字段
//		query.addHighlightField("webContent");// 高亮字段
//		query.setFacet(true)  
//        .setFacetMinCount(12)  
//        .setFacetLimit(5);//段  
    //    query.setQuery("e");   
//      query.setQuery("id:长江2");   
 //    query.setQuery("1");   
		// 查询并获取相应的结果!
		QueryResponse response = null;
		try {
			response = server.query(query);
			  SolrDocumentList docs = response.getResults();
			  //Get the results    
		
	      //      Iterator<SolrDocument> itDocs = response.getResults().iterator();   
			    Iterator<SolrDocument> itDocs = docs.iterator();
	            if (response.getResults().getNumFound() > 10) {   
	                System.out.println("显示前10项相关结果");   
	            }   
	            if (!itDocs.hasNext()) {   
	                //如果没有任何返回结果   
	                System.out.println("no any result! ");   
	            }   
	            while (itDocs.hasNext()) {   
	                SolrDocument resultDoc = itDocs.next();   
	                   
	                String content = (String) resultDoc.getFieldValue("description");   
	                String id = (String) resultDoc.getFieldValue("id");    
	  
	                System.out.println("Content: " + content + "  Id: " + id);   
	            }   
	            System.out.println("文档个数:"+ docs.getNumFound());
	            System.out.println("查询时间:" + response.getQTime());
		} catch (SolrServerException e) {
			System.err.println(e.getMessage());
			e.printStackTrace();
		} catch (Exception e) {
			System.err.println(e.getMessage());
			e.printStackTrace();
		} finally {

		}

	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics