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 > '${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数据库表数据”中,我们将深入探讨如何利用Solr 5来实现对MySQL数据库表数据的增量索引,以便在搜索时获得实时更新的结果。 首先,我们需要理解什么是增量索引。在传统的...
在macOS上安装Solr并索引MySQL_在macOS上安装Solr并索引MySQL
本文将深入探讨如何使用MySQL作为SOLR的索引源,以提升数据检索的效率和性能。 首先,我们需要了解MySQL作为数据存储的优势,它提供了丰富的SQL查询语言,支持事务处理和ACID(原子性、一致性、隔离性和持久性)...
增量导入更新索引包是Solr中的一项重要功能,它允许系统仅处理自上次完整索引以来发生改变的数据,从而大大提升了效率并降低了资源消耗。下面将详细阐述Solr增量更新的相关知识点。 1. **Solr的索引机制** Solr...
在本案例中,我们将探讨如何将 MySQL 数据库中的数据导入到 Solr 5.3.1 中,以便进行高效的全文检索。 首先,我们需要理解 Solr 的核心组件——Schema.xml 文件。这是 Solr 的模式定义文件,它定义了索引字段、字段...
#### 三、Solr与MySQL集成 **3.1 导入MySQL驱动包** - 将MySQL的JDBC驱动程序和Solr Data Import Handler (DIH) 相关的JAR文件导入到`mycore/lib`目录中。 - MySQL驱动程序可以从官方Maven仓库下载:...
《跟益达学Solr5之从MySQL数据库导入数据并索引》这篇文章主要探讨了如何使用Apache Solr 5从MySQL数据库中导入数据并建立索引,以便进行高效的全文搜索。Solr是一款强大的开源搜索服务器,它提供了丰富的查询语言、...
在Solr中,为了实现与数据库的实时同步,通常会采用增量索引策略,确保数据库中的新数据或更新能够及时反映到Solr索引中,提高系统的响应速度和效率。 标题中的"solr同步数据库需要jar包"指的就是在进行Solr和...
为了自动检测 MySQL 数据库的变化,可以使用第三方工具,如 Debezium 或 Binlog2Solr,它们能够监听 MySQL 的 binlog 并触发 Solr 的 Delta Import。 以上就是 Solr 6.0 与 MySQL 集成配置的基本步骤。完成这些配置...
### Solr 4.7 服务搭建详细指南 #### 一、环境准备 为了搭建 Solr 4.7 服务,我们需要确保以下环境已经准备好: ...通过以上步骤,用户可以成功搭建并配置好 Solr 4.7 服务,实现高效的数据索引和搜索功能。
3. **数据同步**:通过Solr的DIH定期或实时从MySQL中抽取数据,更新到Solr索引,实现数据库和搜索索引的同步。 **IK分词器** 1. **IK Analyzer介绍**:IK分词器支持自定义词典,具备动态扩展性,可以处理中文的...
Apache Solr是一款强大的开源搜索引擎,它能够高效地处理和索引大量数据,提供快速的全文检索、 faceting、高亮显示等高级功能。在实际应用中,为了保持搜索结果的实时性,我们往往需要将数据库中的数据实时或定时...
在`[solrhome]/test/conf`目录下创建或修改`schema.xml`文件,以确保Solr能够正确解析并索引来自MySQL的数据。 - **字段映射**:将数据库字段映射到Solr Document的Field上。 - **数据类型**:定义字段的数据类型,...
同时,MySQL与Solr的结合,可以通过Elastic Data Bridge等工具,实现数据的实时同步,确保索引的实时性。 压缩包中的`content_code`文件包含了整个系统的源代码,开发者可以参考这些代码,理解系统的设计思路和实现...
索引MySQL表到solr 将mysql表索引到solr中 在这里,我们将逐步进行过程。 要将mysql表索引到solr中,我们需要这些技术。 MySQL数据库 让我们从MySql开始聚会。 使用yum或任何您喜欢的方法,先安装mysql,再安装...
在本文中,我们将深入探讨如何在macOS操作系统上安装Apache Solr,并设置它来索引MySQL数据库中的数据。Apache Solr是一个开源的企业级搜索平台,它提供了强大的全文搜索、近实时搜索以及高级分析功能。而MySQL是...