zoukankan      html  css  js  c++  java
  • solr 简单搭建 数据库数据同步(待续)

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

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

    文档检索事实上是全文检索。是通过一种技术把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文件。将自己须要显示的字段设置上


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

  • 相关阅读:
    POJ 3126 Prime Path
    POJ 2429 GCD & LCM Inverse
    POJ 2395 Out of Hay
    【Codeforces 105D】 Bag of mice
    【POJ 3071】 Football
    【POJ 2096】 Collecting Bugs
    【CQOI 2009】 余数之和
    【Codeforces 258E】 Devu and Flowers
    【SDOI 2010】 古代猪文
    【BZOJ 2982】 combination
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6763106.html
Copyright © 2011-2022 走看看