solr 简单搭建 数据库数据同步(待续)

原来在别的公司负责过文档检索模块的维护(意思就是不是俺开发的啦)。所以就稍微接触和研究了下文档检索。

文档检索其实是全文检索,是通过一种技术把N多文档进行一定规律的切割归类,然后创建易于搜索的索引式文件,然后搜索具有某些规律的文档时,能够通过快速定位索引,然后根据索引提供的信息精确定位到文档从而实现迅速找到文档。这个文档一般成为条目。

上家公司的时候使用的是Lucene加上Zoie实现的。lucene是apache下的开源项目,不过并不是全文检索的实现,而是一个全文检索的引擎,是一个架构,是其他检索服务的底层支持。zoie研究的不是太多,因为觉得并不是很好用。对于lucene的基本知识和使用,以后单独写篇博客记录,该文主要记录solr的简单搭建和应用。

Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。也就是说solr可以自己直接做服务使用。就像上家公司自己开发的搜索服务包,封装了一些lucene的操作(主要是写入索引indexWriter)和一些zoie的操作(主要是读取操作indexReader),使用了最简单的自带的分词方法StandardAnalyzer,所以并不好用。而solr就是一个已经都封装好的war包,准许http访问,至于文档格式、字段、索引创建、搜索等都是可以配置的。是不是可以说基本perfect了!

下来就简单说下我的研究步骤:

1.下载solr。我的笔记本是Windows系统,所以我下载的是zip包,下载地址

2.解压solr的zip包,解压的目录结构如图:

bin目录下是一些脚本

contrib是一些扩展插件的jar包,供solr服务引用和添加高级功能等。其中配置的分词器、数据库数据引入、数据视图解析(xml、json等)等。

dist下是solr自己的一堆jar包以及java客户端sorlj的依赖包

docs下是帮助文档,十分详细

example下是实例配置、jetty的配置、solr core配置

licenses下是认证信息,无需管。

3.这次直接讲解如何将数据库的数据同步到索引里。

01.将example/solr中的collection1文件夹复制一份到同目录下,重命名为user,将user文件夹下的core.properties和README.txt删掉,将user/data文件夹下清空。

02.user文件夹即是我们新建的索引库。其下的conf文件夹是索引的一些配置文件,data文件夹下是初始化之后创建的索引文件

03.conf下介绍:

.clustering文件夹配置集群的(暂未研究)

.lang文件夹配置的各国语言的stopwords

.velocity文件夹是配置vm的返回格式,使用/browse即可

.xlst文件夹是配置xml数据格式的

外部文件解析:

stopwords.txt过滤词

protwords.txt有保护性的词(不太理解)

synonyms.txt同义词

spellings.txt拼写检查文档

elevate.xml配置排名上升的field

solrconfig.xml是solr的主要配置文件,配置jar包、路径信息、创建索引配置、updateHandler配置、query配置、requestHandler配置、一些展示页面配置、数据源配置(DataImportHandler)、facet展示页面配置

schema.xml是solr索引的字段配置文件。配置field、fieldType等

04.修改solrconfig.xml文件:

引入自己需要的jar包

<lib dir="../bin/" regex="mysql-connector-java-5.0.8-bin.jar" />

<!-- analysis libs by tianzhilong -->

<lib dir="../../../contrib/analysis-extras/lib" regex=".*\.jar" />

配置/browse访问的查询条件、VelocityResponseWriter、facet展示页面。主要需要修改Query settings中的qf(设置查询字段以及各字段的权重);df(默认查询字段)等等查询参数可见http://sarsgetaway.iteye.com/blog/1560143;faceting设置主要设置field、query、range;高亮设置;拼写检查设置

加入/dataimport路径进行数据同步

<!-- DataImportHandler to be registered in the solrconfig.xml -->

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

<lst name="defaults">

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

</lst>

</requestHandler>

05.修改schema.xml文件

将数据库user表的需要存储和索引的字段配置进schema.xml中,将原来的测试字段删除;

dynamicField不变;

copyField将自己的字段添加(建立索引的字段,只存储不索引的字段不管);

fieldType中增加中文分词的类型

<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">

<analyzer type="index">

<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>

<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>

</analyzer>

<analyzer type="query">

<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>

<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>

</analyzer>

</fieldType>

06.在velocity文件夹下,修改product_doc.vm文件。将自己需要显示的字段设置上

时间有限,下来再排版和补全。待续~

时间: 2024-10-11 07:42:38

solr 简单搭建 数据库数据同步(待续)的相关文章

[db2数据库数据同步解决方案]DB2数据库数据同步更新方法及设备与流程

技术总结 本发明实施例提供了DB2数据库数据同步更新方法及设备.所述方法包括:根据待同步更新表创建数据详细地址存储列,对待同步更新表上S锁,获取源端DB2数据库当前的日志序列号LSN作为待同步更新表的起始LSN,释放S锁:获取待同步更新表的结果集,将结果集发送至目标端数据库入库,获取源端DB2数据库当前LSN作为待同步更新表的结束LSN:接收源端同步更新服务发送的初始化数据,在目标端数据库将ROWID插入数据详细地址存储列,初始化待同步更新表的数据:启动数据实时同步更新服务,将源端DB2数据库的

关于数据库数据同步的问题

今天遇到一个要求,需要将数据库间的数据同步,之前没有弄过,百度了一下,知道了可以用DBLink,然后新建好了一个DBLink,然后就是编写一个定时任务调用同步语句, 定时任务比较简单,关键是存储过程比较繁琐,于是百度了一下数据库同步的便捷方法,了解了可以用oracle数据库可以marge语句,十分便利,so,花了十分钟写好了同步的 存储过程,然后对这个同步语句进行一定的优化,根据一个数据库的最新的时间节点与另一个数据库最晚的时间节点进行判断与是否要更新,编写一个博文,以做总结和记录, 后期有遇到

Oracle Job定时任务详解、跨数据库数据同步

业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://www.cnblogs.com/chenyanbin/p/11291752.html 如果做数据同步呢?上面我们已经通过DBLink与SQL Server建立连接了,那么我们就可以获取A公司表中的数据.在通过Oracle Job定时任务,具体JOB还有那些功能,这里不做详细介绍了,百度上一大堆,这里我们

Oracle数据库数据同步方案

一.比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新: 二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblink来完成. 二.通过物化视图定时刷新来实现数据同步.物化视图刷新方式有增量刷新和完全刷新两种模式: 三.高级复制,分为多主复制和物化视图复制两种模式.其中多主复制能进行双向同步复制和异步复制:物化视图用于单向复制,定时刷新,与第二条类似: 四.流复制,可实现实时和非实时同步: 五.GoldenGat

关于不同软件间数据库数据同步的实现分析

目标:K3数据库中销售订单自动录入生产管理系统 方式:数据库触发器 过程: 1.导出分析K3数据库表结构,生产管理系统数据库表结构 2.制作K3前台项目--K3数据库中对应的列--生产管理系统数据库中对应的列--生产管理系统前台项目 3.了解K3的销售数据录入数据库的过程:订单表.订单详细表中数据插入时先后顺序 4.了解K3数据库可以直接向生产管理系统数据库传递哪些数据,间接传递那些数据(需从其他表取数据,需对数据进行分割.合并等) 5.触发器测试(从简单到复杂:旱冰鞋--滑板--自行车--电动

第三步solr实现MySQL 数据库数据表索引

1.修改索引地址:任意位置皆可,本文在E:\solr\下建了一个data文件夹,然后修改E:\solr\collection1\conf\solrconfig.xml 下的dir: 为创建的索引地址路径 <dataDir>${solr.data.dir:E:/solr/data}</dataDir> 2.建立数据库为es_data,在其下面建立一个名为news的数据表 3.在E:\solr\collection1\conf下新建一个data-config.xml文件,在里面添加以下

solr简单搭建与使用

安装步骤: java环境, jdk1.8 从官网下载最新的solr7.5 wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.5.0/solr-7.5.0.tgz 解压 :tar -zxvf solr-7.5.0.tgz -C /usr/local/ 添加环境变量:vim /etc/profile #solr7.5 export PATH=$PATH:/usr/local/solr-7.5.0/bin/ 启动失败原因: 这是因为使用的是roo

[db2数据库数据同步解决方案]db2数据库同步

db2look-dpayment-a-e-x-0cre_stp.sql db2-tvfcre_stp.sql db2look-i指定用户-w指定密码 2 db2move导出数据文件 db2moveexport db2move导出数据 db2moveimport truncatetable删除表中的所有行 要将数据倒入一个指定的schema的中需要修改 导入数据文件中的db2move.lst文件将里面的shema该改为需要导入数据的shema 3 导出一个指定schema的数据 db2moveoc

mysql 集群 数据同步

mysql集群配置在网站负载均衡中是必不可少的: 首先说下我个人准备的负载均衡方式: 1.通过nginx方向代理来将服务器压力分散到各个服务器上: 2.每个服务器中代码逻辑一样: 3.通过使用redis缓存来保存内存中数据,使用redis同步功能来同步不同服务器内存中的数据: 4.在通过mysql的集群配置来实现数据库数据同步: 这里我整理了几种数据同步方式: 一:主从服务器同步: 顾名思义:主服务器负责数据的增删改查,从服务器负责同步数据: 主服务器建立二进制文件:每产生语句变化或磁盘变化写入