`

solr(三) mysql索引

 
阅读更多

      solr环境建好后,可以通过数据库直接将相关内容索引,然后通过solrj进行调用,其步骤如下.

       前提条件:已经建好了环境以及配置了相关中文分词。(-,二中有涉及).

      1) 添加dataimport

           编辑${catalina_home}\solr_config\solr\collection1\conf\solrconfig.xml,在最后添加以下内容.

         

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
		<lst name="defaults">
		  <str name="config">data-config.xml</str>
		</lst>
</requestHandler>

 2)在同一目录新建 data-config.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig> 
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr" user="root" password="123"/> 
     
	<document name="messages">   
			 <!--文件表 -->
			 <entity name="blog" pk="id" transformer="ClobTransformer" 
			 query="select id,title,content from tb_blogs"
			 deltaQuery="select id,title,content from tb_blogs where appllytime &gt; '${dataimporter.last_index_time}'" 
			 >
				<field column="id" name="id" />
				<field column="title"  name="title"/>
				<field column="content" name="content"/> 
			 </entity>  
	</document> 
</dataConfig> 

 3)将相关jar包copy到${catalina_home}\webapps\solr\WEB-INF\lib中,主要有三个包。mysql, solr-dataimporthandler-4.2.1.jar和solr-dataimporthandler-extras-4.2.1.jar。

 

4)编辑${catalina_home}\solr_config\solr\collection1\conf\schema.xml,将几个相关字段的属性添加上。因为原始文档中已经存在这几个字段名,所以此处做部分修改,此处如有不解可以参看下solr的配置文档。

   <!--
   <field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
   -->
    <field name="title" type="text_ik" indexed="true" stored="true" multiValued="true"/>
 
<!-- <field name="content" type="text_general" indexed="false" stored="true" multiValued="true"/>-->
    <field name="content" type="text_ik" indexed="false" stored="true" multiValued="true"/>

<!--新建一个字段-->
 <field name="blog" type="text_ik" indexed="true" stored="true" multiValued="true"/>

<!--统一搜索-->
  <!-- Text fields from SolrCell to search by default in our catch-all field -->
   <copyField source="title" dest="blog"/>
   <copyField source="content" dest="blog"/>



 5)启动tomcat,直接访问 http://localhost:8983/solr/import?command=full-import,如果成功,会有相关消息显示有多少条数据index,  同时在${catalina_home}\solr_config\solr\collection1\conf\dataimport.properties中会产生一个dataimport.properties文件,其中记录最后index时间,这个是增量index的时间标致,标识下次index从哪里开始,原则上数据库中应该有个时间字段与其比较。手动插入几条数据,将时间设为标识之后,然后访问 /dataimport?command=delta-import,可见增量的index数据。

 

6)client端测试

相关jar包 solr-4.2.1\dist\solrj-lib中的所有包及solr-4.2.1\dist\solr-solrj-4.2.1.jar,执行以下程序,可看到结果。

package com.solr.client;

import org.apache.solr.client.solrj.SolrQuery;
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;

//solr客户端调用
public class SolrJSearch {
	String url = "http://localhost:8080/solr";
	HttpSolrServer  solrServer =null;
	
	
	/**
	 * 初始化CommonsHttpSolrServer
	 */
	public SolrJSearch(){
		solrServer = new HttpSolrServer(url);
		solrServer.setMaxTotalConnections(100);
        solrServer.setSoTimeout(10000); 
        solrServer.setConnectionTimeout(5000);
	    }  
	     
	/**
	 * 全文检索方法
	 */
	public void search(String keywords){  
	        SolrQuery query = new SolrQuery();  
	        query.setQuery("中国");
	        
	           /**
	            * solrconfig.xml
	            *<formatter name="html" 
				*default="true"
				*class="solr.highlight.HtmlFormatter">
				*<lst name="defaults">
				*<str name="hl.simple.pre"><![CDATA[<font class='highlight'>]]></str>
				*<str name="hl.simple.post"><![CDATA[</font>]]></str>
				*</lst>
				*</formatter>
	            */
	       //设置合并  

	        query.setFacet(true);
	        query.setHighlight(true)
	                      .setHighlightSnippets(3)
	                      .setHighlightSimplePre("<span class='highlight'>")//设置开头
	                      .setHighlightSimplePost("</span>") //设置结尾
	                     // .setParam("hl.mergeContiguous", "true")
	                      .setParam("hl.fl", "content,title");
	                      //.setStart(0) 
	                      //.setRows(10);//设置行数

	        //新加条件(and的作用对TERM_VAL的6到8折的限制)
	        //query.addFilterQuery("content:EditText");
	        //排序用的  
	        //query.addSortField( "price", SolrQuery.ORDER.asc );  
	        
	        try {  
	            QueryResponse rsp = solrServer.query( query );  
	            
	            SolrDocumentList docs = rsp.getResults();  
	            System.out.println("数据匹配个数:" + docs.getNumFound());  
	            System.out.println("查询时间:" + rsp.getQTime()); 
	            for (SolrDocument doc : docs) {
	            	
	                 String id = (String) doc.getFieldValue("id");
	                 if(rsp.getHighlighting().get(id)!=null){
	                	 System.out.println("id is "+id);
	                	 System.out.println(rsp.getHighlighting().get(id).get("title"));
	                	 System.out.println(rsp.getHighlighting().get(id).get("content")); 
	                 }
//	                 String content = (String) doc.getFieldValue("content");  
//		             String title = (String) doc.getFieldValue("title"); 
//		             System.out.println("id:"+id);
//		             System.out.println("content:"+content);   
//		             System.out.println("title:"+title);
		             System.out.println("-------------------");
	                
	            }  
	        } catch (SolrServerException e) {  
	            e.printStackTrace();  
	        }   
	    }  
	      	  
	  
	/**
	 * 测试方法
	 */
    public static void main(String[] args) { 
        SolrJSearch sj = new SolrJSearch();  
        sj.search("虑感");  
//        sj.search("比亚迪管理文件");  
    }  

}

 

 

 

 

分享到:
评论

相关推荐

    跟益达学Solr5之增量索引MySQL数据库表数据

    在这个主题“跟益达学Solr5之增量索引MySQL数据库表数据”中,我们将深入探讨如何利用Solr 5来实现对MySQL数据库表数据的增量索引,以便在搜索时获得实时更新的结果。 首先,我们需要理解什么是增量索引。在传统的...

    在macOS上安装Solr并索引MySQL_在macOS上安装Solr并索引MySQL.zip

    在macOS上安装Solr并索引MySQL_在macOS上安装Solr并索引MySQL

    使用MySQL作为SOLR的索引源

    本文将深入探讨如何使用MySQL作为SOLR的索引源,以提升数据检索的效率和性能。 首先,我们需要了解MySQL作为数据存储的优势,它提供了丰富的SQL查询语言,支持事务处理和ACID(原子性、一致性、隔离性和持久性)...

    solr增量导入更新索引包

    增量导入更新索引包是Solr中的一项重要功能,它允许系统仅处理自上次完整索引以来发生改变的数据,从而大大提升了效率并降低了资源消耗。下面将详细阐述Solr增量更新的相关知识点。 1. **Solr的索引机制** Solr...

    solr5.3.1 导入mysql数据

    在本案例中,我们将探讨如何将 MySQL 数据库中的数据导入到 Solr 5.3.1 中,以便进行高效的全文检索。 首先,我们需要理解 Solr 的核心组件——Schema.xml 文件。这是 Solr 的模式定义文件,它定义了索引字段、字段...

    图解Solr6.6.0安装与MySQL配置

    #### 三、Solr与MySQL集成 **3.1 导入MySQL驱动包** - 将MySQL的JDBC驱动程序和Solr Data Import Handler (DIH) 相关的JAR文件导入到`mycore/lib`目录中。 - MySQL驱动程序可以从官方Maven仓库下载:...

    跟益达学Solr5之从MySQL数据库导入数据并索引

    《跟益达学Solr5之从MySQL数据库导入数据并索引》这篇文章主要探讨了如何使用Apache Solr 5从MySQL数据库中导入数据并建立索引,以便进行高效的全文搜索。Solr是一款强大的开源搜索服务器,它提供了丰富的查询语言、...

    solr同步数据库需要jar包

    在Solr中,为了实现与数据库的实时同步,通常会采用增量索引策略,确保数据库中的新数据或更新能够及时反映到Solr索引中,提高系统的响应速度和效率。 标题中的"solr同步数据库需要jar包"指的就是在进行Solr和...

    solr6.0+mysql集成配置

    为了自动检测 MySQL 数据库的变化,可以使用第三方工具,如 Debezium 或 Binlog2Solr,它们能够监听 MySQL 的 binlog 并触发 Solr 的 Delta Import。 以上就是 Solr 6.0 与 MySQL 集成配置的基本步骤。完成这些配置...

    solr4.7服务搭建

    ### Solr 4.7 服务搭建详细指南 #### 一、环境准备 为了搭建 Solr 4.7 服务,我们需要确保以下环境已经准备好: ...通过以上步骤,用户可以成功搭建并配置好 Solr 4.7 服务,实现高效的数据索引和搜索功能。

    solr6.0+mysql+IK分词集成

    3. **数据同步**:通过Solr的DIH定期或实时从MySQL中抽取数据,更新到Solr索引,实现数据库和搜索索引的同步。 **IK分词器** 1. **IK Analyzer介绍**:IK分词器支持自定义词典,具备动态扩展性,可以处理中文的...

    solr定时自动同步数据库需要用到的apache-solr-dataimportscheduler.jar包

    Apache Solr是一款强大的开源搜索引擎,它能够高效地处理和索引大量数据,提供快速的全文检索、 faceting、高亮显示等高级功能。在实际应用中,为了保持搜索结果的实时性,我们往往需要将数据库中的数据实时或定时...

    图解Solr5.3.1与MySQL配置【原创】

    在`[solrhome]/test/conf`目录下创建或修改`schema.xml`文件,以确保Solr能够正确解析并索引来自MySQL的数据。 - **字段映射**:将数据库字段映射到Solr Document的Field上。 - **数据类型**:定义字段的数据类型,...

    基于Solr4.9.0的搜索系统:包括Solr索引建立、Solr索引查询DUBBO接口等内容。.zip

    同时,MySQL与Solr的结合,可以通过Elastic Data Bridge等工具,实现数据的实时同步,确保索引的实时性。 压缩包中的`content_code`文件包含了整个系统的源代码,开发者可以参考这些代码,理解系统的设计思路和实现...

    indexing-mysql-table-into-solr:将mysql表索引到solr中

    索引MySQL表到solr 将mysql表索引到solr中 在这里,我们将逐步进行过程。 要将mysql表索引到solr中,我们需要这些技术。 MySQL数据库 让我们从MySql开始聚会。 使用yum或任何您喜欢的方法,先安装mysql,再安装...

    macOS安装Solr并索引MySQL

    在本文中,我们将深入探讨如何在macOS操作系统上安装Apache Solr,并设置它来索引MySQL数据库中的数据。Apache Solr是一个开源的企业级搜索平台,它提供了强大的全文搜索、近实时搜索以及高级分析功能。而MySQL是...

Global site tag (gtag.js) - Google Analytics