• Solr:Slor初识(概述、Windows版本的安装、添加IK分词器)


    1、Solr概述

    (1)Solr与数据库相比的优势

    搜索速度更快、搜索结果能够按相关度排序、搜索内容格式不固定等

    (2)Lucene与Solr的区别

    Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包

    Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。

    2、Solr的Windows版本的安装

    (1)目录结构

     Solr的启动在bin目录下,用的是内置的服务器不是很稳定

    contrib:插件

    dist:jar包

    (2)安装

    • 将Solr的example的webapps目录下的solr.war复制到tomcat的webapps目录下并解压
    • 将example目录下的jar包放到tomcat的lib目录下:
    •  配置家目录:

     目录的内容是从solr中复制过来的:

     在配置文件中配置:

        <env-entry>
           <env-entry-name>solr/home</env-entry-name>
           <env-entry-value>D:Program_filessolrsolrhome</env-entry-value>
           <env-entry-type>java.lang.String</env-entry-type>
        </env-entry>

    (3)启动

    • 先在bin目录下启动tomcat并访问Solr

    3、Solr的后台界面

    (1)添加核

     在Solr的家目录复制一个collection并修改目录的名称,打开目录将配置文件中的name属性也更改为目录的名称

     效果:

     (2)功能

     analysis:分词器

    dataimport:导入数据库数据

    Documents:进行增删改查

     Query:查询

     Files:配置文件(在核的conf目录下)

     Ping:测试服务是否存在

    (3)schema.xml配置文件中的域

    域:

     <field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
       <field name="subject" type="text_general" indexed="true" stored="true"/>
       <field name="description" type="text_general" indexed="true" stored="true"/>
       <field name="comments" type="text_general" indexed="true" stored="true"/>
       <field name="author" type="text_general" indexed="true" stored="true"/>
       <field name="keywords" type="text_general" indexed="true" stored="true"/>
       <field name="category" type="text_general" indexed="true" stored="true"/>
       <field name="resourcename" type="text_general" indexed="true" stored="true"/>
       <field name="url" type="text_general" indexed="true" stored="true"/>
       <field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/>
       <field name="last_modified" type="date" indexed="true" stored="true"/>
       <field name="links" type="string" indexed="true" stored="true" multiValued="true"/>

    动态域:

     <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
       <dynamicField name="*_is" type="int"    indexed="true"  stored="true"  multiValued="true"/>
       <dynamicField name="*_s"  type="string"  indexed="true"  stored="true" />
       <dynamicField name="*_ss" type="string"  indexed="true"  stored="true" multiValued="true"/>
       <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
       <dynamicField name="*_ls" type="long"   indexed="true"  stored="true"  multiValued="true"/>
       <dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true"/>
       <dynamicField name="*_txt" type="text_general"   indexed="true"  stored="true" multiValued="true"/>
       <dynamicField name="*_en"  type="text_en"    indexed="true"  stored="true" multiValued="true"/>
       <dynamicField name="*_b"  type="boolean" indexed="true" stored="true"/>
       <dynamicField name="*_bs" type="boolean" indexed="true" stored="true"  multiValued="true"/>
       <dynamicField name="*_f"  type="float"  indexed="true"  stored="true"/>
       <dynamicField name="*_fs" type="float"  indexed="true"  stored="true"  multiValued="true"/>
       <dynamicField name="*_d"  type="double" indexed="true"  stored="true"/>
       <dynamicField name="*_ds" type="double" indexed="true"  stored="true"  multiValued="true"/>

    拷贝域:

    <copyField source="cat" dest="text"/>
       <copyField source="name" dest="text"/>
       <copyField source="manu" dest="text"/>
       <copyField source="features" dest="text"/>
       <copyField source="includes" dest="text"/>
       <copyField source="manu" dest="manu_exact"/>

    实际搜索的是text域,就是将多个域进行合并,只搜索一个域

    4、配置IK分词器

    (1)导入jar包

     (2)新建classes目录并创建配置文件

     (3)自定义域的类型

      <fieldType name="text_ik" class="solr.TextField">
          <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
       </fieldType>

    (4)自定义域

      <field name="title_ik" type="text_ik" indexed="true" stored="true" />
       <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

    (5)重启测试

  • 相关阅读:
    Hashmap
    string字符串分词
    关于链表的几道经典例题
    【C语言】链表(LinkedList)的建立与基本操作
    01迷宫
    2019 数学联赛 题解 / 游记
    一种简单方法构造 n 元有限域
    Python逆向某网站之 AES解密数据
    我发现了一个网站Bug,然后反馈了
    在多线程中使用静态方法是否有线程安全问题
  • 原文地址:https://www.cnblogs.com/zhai1997/p/14165911.html
Copyright © 2020-2023  润新知