Solr全文检索---环境搭建

Solr概述

  • 所有编程语言都能调用使用Solr。
  • Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。
  • Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。
  • Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。

Solr的安装

  1. 在本地安装 tomcat

  2. 解压 solr,把 solr 下的dist目录solr-4.10.3.war部署到 Tomcat\webapps下(去掉版本号)

  3. 启动 Tomcat解压缩 war 包

  4. 把本地solr下example/lib/ext 目录下的所有的 jar 包,添加到tomcat的 solr 的工程中(\WEB-INF\lib目录下)

  5. 创建一个 solrhome 。本地solr 下的/example/solr 目录就是一个 solrhome。复制此目录到D盘改名为 solrhome

  6. 关联 solr 及 solrhome。需要修改tomcat的 solr 工程的 web.xml 文件,关联本地的 solrhome

    <env-entry>
           <env-entry-name>solr/home</env-entry-name>
           <env-entry-value>F:\solrhome</env-entry-value>
           <env-entry-type>java.lang.String</env-entry-type>
     </env-entry>
    
  7. 重新启动 Tomcat,访问 : http:/localhost:8080/solr/

中文分析器 IK Analyzer

概述:

​ IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包。

IK Analyzer 的配置:

  1. 解压 IK Analyzer 2012FF_hf1.zip压缩包

  2. 把 IKAnalyzer2012FF_u1.jar 添加到 tomcat的 solr 工程的 lib 目录下(\WEB-INF\lib目录下)

  3. 在solr的工程下,WEB-INF下创建classes文件夹 。把IK压缩包中的扩展词典停用词词典配置文件放到 solr 工程的 WEB-INF/classes 目录下

  4. 修改本地的 solrhome 的 schema.xml 文件(solrhome\collection1\conf),任意位置 配置一个 FieldType,使用 IKAnalyzer

    <!--IKAnalyzer中文分析器-->
    <fieldType name="text_ik" class="solr.TextField">
    	<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
    

Slor域

域相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的Field(域),一般来说,每一种对应着一种数据,用户对同一种数据进行相同的操作。

域中的属性:

  1. name:指定域的名称
  2. type:指定域的类型 —(long、double、string、自定义类型(text_ik))
  3. indexed:是否索引 — 搜索(true 、false)
  4. stored:是否存储 — 展示(true、false)
  5. required:是否必须(不为null)— (true、false)
  6. multiValued:是否多值 — [“sadsa”,”dadasd”] (true、false)

1、配置所需的基本字段域

可以修改本地solrhome的 collection1\conf\schema.xml 文件 , 设置业务系统所需的 Field 。比如电商里面所需的搜索域对象(价格、商家、品牌…)

<!--配置基本业务所需的域-->
<field name="item_goodsid" type="long" indexed="true" stored="true"/>
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="double" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category" type="string" indexed="true" stored="true" />
<field name="item_seller" type="text_ik" indexed="true" stored="true" />
<field name="item_brand" type="string" indexed="true" stored="true" />

2、配置复制域

复制域的作用在于将某一个Field中的数据复制到另一个域中。比如(在搜索的时候,不知道搜索的对象具体是什么,所以需要配置复制域来满足需求,)

在本地solrhome的collection1\conf\schema.xml文件配置

<!--配置复制域,里面包含所需的基本域-->
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
	<copyField source="item_title" dest="item_keywords"/>
	<copyField source="item_category" dest="item_keywords"/>
	<copyField source="item_seller" dest="item_keywords"/>
	<copyField source="item_brand" dest="item_keywords"/>

3、配置动态域

当我们需要动态扩充字段时,就需要使用动态域。比如: 电商里面的商品规格是不确定的,需要根据具体的分类来确定具体的规格

在本地solrhome的collection1\conf\schema.xml文件配置

<!--配置动态域-->
<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值