热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr06-Solr配置IK分词器和业务域

目录1配置中文分词器1.1准备IK中文分词器1.2配置schema.xml文件1.2.1加入使用IK分词器的域类型1.

目录

  • 1 配置中文分词器
    • 1.1 准备IK中文分词器
    • 1.2 配置schema.xml文件
      • 1.2.1 加入使用IK分词器的域类型
      • 1.2.2 加入使用IK分词器的域
    • 1.3 重启Tomcat并测试
  • 2 配置业务域
    • 2.1 准备商品数据
    • 2.2 配置商品业务域
    • 2.3 配置schema.xml文件
    • 2.4 重新启动Tomcat并查看配置

1 配置中文分词器

1.1 准备IK中文分词器

  1. 复制IK解压目录中的jar包: IKAnalyzer2012FF_u1.jar. 可在 我的github 下载.

  2. 粘贴到tomcat/webapps/solr/WEB-INF/lib目录.

  3. 复制IK解压目录中的配置文件:
    图片

  4. 粘贴到tomcat/webapps/solr/WEB-INF/classes目录.

1.2 配置schema.xml文件

1.2.1 加入使用IK分词器的域类型



    

1.2.2 加入使用IK分词器的域


图片

1.3 重启Tomcat并测试

选择任意Core, 然后在菜单栏里选择[Analysis], 输入中文语句, 进行分词测试:
图片

2 配置业务域

需求引入: 假设现在要使用Solr完成电商网站商品数据的搜索, 需要将保存在关系数据库中的商品数据导入到Solr索引库中.

2.1 准备商品数据

DROP DATABASE IF EXISTS `solr`;
CREATE DATABASE `solr`;
USE `solr`;

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `products`;
CREATE TABLE `products` (
    `pid` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品编号',
    `name` varchar(255) DEFAULT NULL COMMENT '商品名称',
    `catalog` int(11) DEFAULT NULL COMMENT '商品分类ID',
    `catalog_name` varchar(50) DEFAULT NULL COMMENT '商品分类名称',
    `price` double DEFAULT NULL COMMENT '价格',
    `number` int(11) DEFAULT NULL COMMENT '数量',
    `description` longtext COMMENT '商品描述',
    `picture` varchar(255) DEFAULT NULL COMMENT '图片名称',
    `release_time` datetime DEFAULT NULL COMMENT '上架时间',
    PRIMARY KEY (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=6126 DEFAULT CHARSET=utf8;

具体表数据可在 我的github 下载.

2.2 配置商品业务域

说明: 分析商品数据库表, 确定哪些字段需要在Solr中建立索引和存储.

字段: pid, name, catalog, catalog_name, price, description, picture

  • 商品Id(直接使用Solr的id域):
 
  • 商品名称(若要用于高亮显示, 必须设置stored="true"):
 
  • 商品分类id:
 
  • 商品分类名称(String类型, 表示整体匹配, 不作分词):
 
  • 商品价格:
 
  • 商品描述:
 
  • 商品图片:
 
  • 配置商品复制域(stored="true", 实际开发中multiValued="true"的field不需要存储, 这里存储便于观察效果):

 


2.3 配置schema.xml文件

注意: 这里id使用Solr默认的id域(一定要有主键, 没有则需要将默认的id域删除, 也可更改id生成策略. 尝试过未在库中设置主键而此文件中的id域未删除也未重写, 此时可以建立索引, 却无法检索到结果(⊙﹏⊙)):

图片

2.4 重新启动Tomcat并查看配置

选中任意一个core, 选择Analysis, 在Fieldname / FieldType处查看, 观察配置是否成功:
图片

版权声明

作者: ma_shoufeng(马瘦风)

出处: 博客园 马瘦风的博客

您的支持是对博主的极大鼓励, 感谢您的阅读.

本文版权归博主所有, 欢迎转载, 但未经博主同意必须保留此段声明, 且在文章页面明显位置给出原文链接, 否则博主保留追究法律责任的权利.


推荐阅读
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文提供了关于数据库设计的建议和注意事项,包括字段类型选择、命名规则、日期的加入、索引的使用、主键的选择、NULL处理、网络带宽消耗的减少、事务粒度的控制等方面的建议。同时还介绍了使用Window Functions进行数据处理的方法。通过遵循这些建议,可以提高数据库的性能和可维护性。 ... [详细]
  • Yii framwork 应用小窍门
    Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
author-avatar
小情人恩恩baby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有