1、Solr概述

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

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

(2)Lucene与Solr的区别

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

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

 

2、Solr的Windows版本的安装

(1)目录结构

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

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

contrib:插件

dist:jar包

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

(2)安装

  • 将Solr的example的webapps目录下的solr.war复制到tomcat的webapps目录下并解压
  • 将example目录下的jar包放到tomcat的lib目录下:
  • Solr:Slor初识(概述、Windows版本的安装、添加IK分词器)_solr_03
  •  配置家目录:

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

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

Solr:Slor初识(概述、Windows版本的安装、添加IK分词器)_配置文件_05

 在配置文件中配置:

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

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

(3)启动

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

Solr:Slor初识(概述、Windows版本的安装、添加IK分词器)_配置文件_07

 

3、Solr的后台界面

(1)添加核

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

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

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

 效果:

Solr:Slor初识(概述、Windows版本的安装、添加IK分词器)_配置文件_10

 (2)功能

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

 analysis:分词器

dataimport:导入数据库数据

Documents:进行增删改查

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

 Query:查询

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

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

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

 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包

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

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

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

 (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)重启测试

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

 

每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛