solr5.X的安装

Solr5.x 的安装
一、安装 solr
1、新建文件夹
[root@iZuf6gkfph7dw18fylgvggZ ~]# cd /usr/local [root@iZuf6gkfph7dw18fylgvggZ local]# mkdir solr
2、上传 solr 至服务器 下载地址:http://archive.apache.org/dist/lucene/solr/5.5.5/
[root@iZuf6gkfph7dw18fylgvggZ ~]# cd /usr/local/solr
(1)上传压缩包至新建文件夹
(2)解压至当前文件夹
[root@iZuf6gkfph7dw18fylgvggZ solr]#tar -zxvf solr-5.5.5.tgz
3、启动 [root@iZuf6gkfph7dw18fylgvggZ solr]# /solr-5.5.5/bin/solr start 在其他端口启动 [root@iZuf6gkfph7dw18fylgvggZ solr]# /solr-5.5.5/bin/solr start -p 8949 响应:Started Solr server on port 8983 (pid=3020). Happy searching!
4、访问管理界面 浏览器输入 ip:port/solr
这里写图片描述
5、创建 solr 库 /solr-5.5.5/bin/solr create -c [库名]
[root@iZuf6gkfph7dw18fylgvggZ solr]# /solr-5.5.5/bin/solr create -c shop
这里写图片描述
6、停止服务
(1)停止特定端口下的 solr [root@iZuf6gkfph7dw18fylgvggZ solr]# solr-5.5.5/bin/solr stop -p 8983 (2)停止所有 solr [root@iZuf6gkfph7dw18fylgvggZ solr]# solr-5.5.5/bin/solr stop –all
7、查看状态 [root@iZuf6gkfph7dw18fylgvggZ solr]# solr-5.5.5/bin/solr status
二、安装分词器
1、下载分词器 使用 ik 分词器,官方版本最新版是 2012 年的,没有更新了。已经不支持 solr5.x,所以选择别人在 ik 分词器基础上写的支持 solr5.x 的分词器。 下载地址:https://github.com/EugenePig/ik-analyzer-solr5
2、生成 jar 包 下载的分词器是一个 maven 项目,导入 IDE 后,maven install 生成 jar 包即可 使用
3、使用 将 jar 包上传至/usr/local/solr/solr-5.5.5/server/solr-webapp/webapp/WEB-INF/lib 即可。

4、配置分词器 分词器应配置在 solr 库中,上一章第 5 节已创建 solr 库。 进入文件夹 [root@iZuf6gkfph7dw18fylgvggZ solr]# cd /usr/local/solr/solr-5.5.5/server/solr/shop/conf
编辑配置文件 [root@iZuf6gkfph7dw18fylgvggZ solr]# vi managed-schema 添加如下配置

<fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="lang/stopwords_id.txt" ignoreCase="true"/>
      <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
    </analyzer>
  </fieldType>
<!--配置分词器-->
  <fieldType name="text_ik" class="solr.TextField">
     <analyzer type="index">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />
     </analyzer>
     <analyzer type="query">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />
     </analyzer>
</fieldType>
  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.ElisionFilterFactory" articles="lang/contractions_it.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_it.txt" ignoreCase="true"/>
      <filter class="solr.ItalianLightStemFilterFactory"/>
    </analyzer>
  </fieldType>

这里写图片描述
保存后重启 solr 服务,进入管理界面,选择 shop 库,选择 analysis,输入中文文 本,选择 text-ik,点击 analyse value。如果能进行分词,则证明分词器安装成功。
这里写图片描述
三、配置业务域(数据索引) 业务域根据实际业务情况来配置 进入文件夹
[root@iZuf6gkfph7dw18fylgvggZ solr]# cd /usr/local/solr/solr-5.5.5/server/solr/shop/conf
编辑配置文件 [root@iZuf6gkfph7dw18fylgvggZ solr]# vi managed-schema
如果出现以下异常
D:\solr-5.5.5\server\solr\shop1\conf\managed-schema: [schema.xml] Duplicate field definition for 'product_title'
说明product_title重复;
配置文件D:\solr-5.5.5\server\solr\shop1\conf\managed-schema重复配置了
1、普通索引 例如商品的属性

 <!--普通数据索引-->
 <field name="product_title" type="text_ik" indexed="true" stored="true"/>
 <field name="product_price" type="long" indexed="true" stored="true"/>
 <field name="product_image" type="string" indexed="false" stored="true" />
 <field name="product_category" type="string" indexed="true" stored="true" />
 <field name="product_seller" type="text_ik" indexed="true" stored="true" />
 <field name="product_brand" type="string" indexed="true" stored="true" />
 <field name="product_description" type="text_ik" indexed="true" stored="false" />

2、复制域 配置搜索关键词时匹配商品哪些属性

  <!--复制域,关键词索引-->
 <field name="product_keywords" type="text_ik" indexed="true" stored="false"
multiValued="true"/>
 <copyField source="product_title" dest="product_keywords"/>
 <copyField source="product_category" dest="product_keywords"/>
 <copyField source="product_seller" dest="product_keywords"/>
 <copyField source="product_brand" dest="product_keywords"/>

3、动态域 动态匹配,*代表通配符。 最后保存文件。

 <!--动态域,商品规格索引-->
 <dynamicField name="product_spec_*" type="string" indexed="true" stored="true"/>

四、java 使用 solr 基于 springboot 项目
1、pom 文件导入 jar 包

<!--基于springboot的solr包-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

2、配置 solr 服务器地址,后面要加 solr 库 在 application.properties 配置文件中配置如下: spring.data.solr.host=http://服务器 ip:8983/solr/shop
4、使用
(1)实体类上加注解,内容和配置的域要一样,“id”是配置文件里有的,不用再配置
这里写图片描述
(2)使用时直接注入 solrClient 即可。 代码式导入数据,操作必须 commit,否则不会成功。
这里写图片描述
这里写图片描述
这里写图片描述
(3)删除所有数据

    /**
     * 删除所有索引数据
     * @throws SolrServerException
     * @throws IOException
     */
    @Test
    public void delete() throws SolrServerException, IOException{
       solrClient.deleteByQuery("*:*");
       solrClient.commit();
       //searchService
    }

(4)搜索

    @Test
    public void search() throws Exception{
       Map<String, String> searchMap = new HashMap<String, String>();
       searchMap.put("keywords","手机");
       searchMap.put("sort","asc");
       searchMap.put("sortField", "price");
       List<Object> list = searchService.search(searchMap, null, null);
       list.forEach(doc ->{
          System.out.println("查到了"+doc);
          System.out.println();
       });
    }
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值