原来在别的公司负责过文档检索模块的维护(意思就是不是俺开发的啦)。

所以就略微接触和研究了下文档检索。

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

上家公司的时候使用的是Lucene加上Zoie实现的。

lucene是apache下的开源项目,只是并非全文检索的实现,而是一个全文检索的引擎,是一个架构,是其它检索服务的底层支持。zoie研究的不是太多,由于认为并非非常好用。对于lucene的基本知识和使用,以后单独写篇博客记录,该文主要记录solr的简单搭建和应用。

Solr它是一种开放源代码的、基于 Lucene Java 的搜索server,易于增加到 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包以及javaclientsorlj的依赖包

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文件。将自己须要显示的字段设置上

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

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

  1. 两台Mysql数据库数据同步实现

    两台Mysql数据库数据同步实现 做开发的时候要做Mysql的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1. ...

  2. Docker环境下的Mysql8 实现主从数据库数据同步方案

    本文记录下通过MySQL Replication在Docker环境下,通过多个容器 实现数据库主从配置. MySQL Replication就不多解释了,简单说就是MySQL非常出色的一个功能,该功能 ...

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

    业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...

  4. Oracle数据库数据同步方案

    一.比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新: 二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblin ...

  5. Redis和数据库 数据同步问题

    Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...

  6. apache solr简单搭建

    首先,下载位置是:http://lucene.apache.org/solr/downloads.html 官网的学习资料:http://lucene.apache.org/solr/quicksta ...

  7. solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

  8. 【NIFI】 实现数据库到数据库之间数据同步

    本里需要基础知识:[NIFI] Apache NiFI 安装及简单的使用 数据同步 界面如下: 具体流程: 1.使用ExecuteSQL连接mysql数据库,通过写sql查询所需要的数据 2.nifi ...

  9. Navicat premium对数据库的结构同步和数据同步功能

    一.在目标数据库新建一个相同的数据库名. 二.工具-->结构同步. 三.填写源数据库和目标数据库. 四.点击比对 五.点击部署 六.点击运行 七.点击关闭.此时源数据库的结构已经同步到目标数据库 ...

随机推荐

  1. System.Threading.Tasks并发和异步代码使用

    main.cs System.Threading.Tasks.Parallel.For(0, 10, i =>            {                TestLock test ...

  2. jquery动态创建表格

    1.代码实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. Linux进程间通信:管道,信号量,消息队列,信号,共享内存,套接字

    Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的.而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间 ...

  4. mysql的正则表达式

    所谓正在表达式,就是通过模式去匹配一类字符串.MySQL支持的模式字符如下表所示: MySQL支持的模式字符 模式字符 含义 ^ 匹配字符串的开始部分 $ 匹配字符串的结束部分 . 匹配字符串中的任意 ...

  5. tm标准mvc框架对应robotlegs 的mvc

    tm标准mvc框架对应robotlegs 的mvc+s (其实都是一样样滴)

  6. [ES6] 02. Traceur compiler and Grunt

    Local Install:  npm install -g traceur npm install grunt-contrib-watch npm install grunt-traceur-lat ...

  7. C#应用视频教程1.1 Socket通信基础

    做Socket通信之前,我们首先要实现几个基本的功能 获取本机IP地址(如果我们要做Socket的服务器,肯定不希望用户每次填写本机IP地址,而是自动获取本机IP地址,这一点我们最好能做的比已有的软件 ...

  8. ssh 安装笔记

    debian 6.0 的一台32位机器,aptitude search openssh-server-x509 没结果(其他机同样源配置是有结果的),于是上内部源下载openssh-server-x5 ...

  9. Python 遍历set

    遍历set 由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现. 直接使用 for 循环可以遍历 set 的元素: weekdays = set([' ...

  10. SQL SERVER: 合并相关操作(Union,Except,Intersect)

    SQL SERVER: 合并相关操作(Union,Except,Intersect) use tempdb create table tempTable1 (id int primary key id ...