作者:高元_G·Marshal于 2017年08月01日 发布在分类 / 开发技术 / BigData 下,并于 2017年08月01日 编辑
    Solr的基础环境搭建

       427

       0


    来源:http://www.2cto.com/kf/201511/451412.html

    附件:图解Solr6.6安装与MySQL配置.docx

    概述

    Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,
    同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。


    工作方式

    文档通过Http利用XML 加到一个搜索集合中。
    查询该集合也是通过http收到一个XML/JSON响应来实现。
    它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,
    提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。


    需求场景

    查询和搜索,我们直接查询数据库MySQL。查询数据库主要有一些局限性:
    比如多表查询效率低,大文本字段不好建立索引和搜索,复杂的条件查询和搜索功能不够强大,或者说不够简单。
    使用Solr的话,就很简单地解决了以上问题。


    对Solr的8点理解

    1.定义数据源接口,获得数据。
    比如定义MySQL查询语句,把一个表或多个表的数据,导入到Solr中。
    这个地方我觉得特别“不公平”,数据都是从别的地方搞过来的。外界的数据如果会变化,意味着,必须处理“数据同步”。
    实时性要求不高的情况下,可以每天“全量更新”。要求高的情况下,单条数据的变化,需要“实时更新-单条”。
    因此,Solr和Mysql并不是“直接竞争”关系,而是“互补”的关系。
    2.把Mysql等数据源的数据,导入到Solr中去。
    Solr定义数据,可以理解成一张很大的表,包含了很多字段,比如可以包含mysql中3个表的所有字段。
    这样,查询就不存在“多表”的问题。
    既然是一张表,建立索引,查询就很快了。
    3.自带缓存功能。
    Mysql,Solr,Redis等数据源或者有能力获得数据和管理数据的组件,只要需要,就可以提供“缓存”功能。
    Solr简化了查询,缓存就更容易了。
    4.索引和全文搜索。
    Solr底层采用Lucene建立索引,全文索引,这样可以实现更多的“搜索功能”,可以说增强了Mysql的查询。
    5.站内搜索的另外一种形式。
    百度等搜索引擎,可以为网站提供“站内搜索”功能,他们爬去数据可以是公开的URL的形式。
    如果需要和百度等合作,可以申请使用百度的搜索API,将站内数据,更友好,更快速地告诉百度。
    而Solr和百度提供的搜索相关接口就基本一样,只不过是处在我们的管理之下。
    6.简洁使用的管理界面。
    后台有Web界面,导入数据,更新,可以通过可视化的操作来管理,比较方便。
    7.功能服务化。
    Solr提供的查询等功能,有Java等多种语言的实现。
    建立数据结构,导入数据,维护缓存和实时性,最重要的就是“查询”和“搜索”了。
    8.最大的“隐患”。
    只用Mysql管理数据和查询的时候,我们必须并且只需要保障mysql的“高可用性”。
    不能出任何问题,如果只用1个Mysql,意味着我们需要实时监控Mysql是否可用,如果出了问题,我们需要立即修复它。
    如果是多台Mysql,我们需要用主从,或者更复杂的主从。


    简要配置

    简要介绍下几个配置,附带源文件内容
    core.properties

    1
    2
    3
    4
    name=raikou(项目名称)
    config=solrconfig.xml(Solr配置)
    schema=schema.xml(模式定义)
    dataDir=J:\SoftData\Solr\raikou\data (存储索引等数据)

    Web界面输入的内容,保存在这了,入口配置,可以这么说。
    schema.xml
    1
    2
    3
    4
    <field indexed="true"multivalued="false"name="id"required="true"stored="true"type="long">
    <field indexed="true"name="title"required="true"stored="true"type="string">
    <field indexed="true"name="content"stored="true"type="string">
    <field indexed="true"name="summary"stored="true"type="string"> </field></field></field></field>

    定义了几个字段
    id
    title
    唯一字段,默认查询字段

    schemal.xml还配置了若干其它配置文件,比如“stopwords_en.txt”、“protwords.txt”、“stopwords.txt”等。
    如果Solr启动报错,可能是缺少了这些字段。

    data-config.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!--?xml version=1.0encoding=UTF-8?--> 
    <dataconfig> 
    <datasource driver="com.mysql.jdbc.Driver"password="mypassword/"type="JdbcDataSource"url="jdbc:mysql://localhost:3306/raikou?useUnicode=true&characterEncoding=UTF-8"user="root"> 
       
    <document name="raikou_article">          
        <entity deltaimportquery="select"deltaquery="select"from=""id="${dih.delta.id}"name="raikou_article"query="select"raikou_article=""update_time=""where="">'${dataimporter.last_index_time}'>                   
                    <field column="id"name="id"> 
                    <field column="title"name="title">
    </field></field></entity></document></datasource></dataconfig>

    定义了数据导入、增量更新的查询语句。

    web.xml 这段配置,可能有用
    WEB-INF/web.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!-- People who want to hardcode their Solr Home directly into the
          WAR File can set the JNDI property here...
      -->
      
       <env-entry>
          <env-entry-name>solr/home</env-entry-name>
          <env-entry-value>J:SoftDataSolr</env-entry-value>
          <env-entry-type>java.lang.String</env-entry-type>
       </env-entry>


    Java程序访问
    maven配
    1
    2
    3
    4
    5
    <dependency>
            <groupid>org.apache.solr</groupid>
            <artifactid>solr-solrj</artifactid>
            <version>5.3.1</version>
        </dependency>

    包名:org.apache.solr.client.solrj




    访问权限

    创建人 高元_G·Marshal
    工作小组 G·Marshal讲堂
    文档编辑权限 创建者私有
    文档阅读权限 来自分类
    分类阅读权限 所有人
    分类编辑权限 所有人
    分类审核权限
    标签

    solr
    历史版本

    修改日期 修改人 备注
    2017-08-01 08:59:09[当前版本] 高元_G·Marshal CREAT
    同类知识
    相关知识

    睿恒知识库-V3.2.0