当前位置: 首页 > article >正文

(四)、Manticore Search学习笔记之本地表介绍

创建本地表

Manticore Search虽然主要操作语言是SQL,但是Manticore Search中没有数据库的概念,只有表(相当于ES中的索引),在Manticore Search中, 有两种方式来管理表

在线模式管理(RT mode)

实时模式不需要在配置文件中定义表,但是,searchd 部分中的data_dir指令是强制性的,索引文件存储在 data_dir 中

复制仅在此模式下可用

你可以使用 SQL 命令,例如CREATE TABLE,ALTER TABLE,DROP TABLE等命令来创建表、修改表和删除表,这种模式对于real-timepercolate tables特别有用

表名在创建时转换为小写

在配置文件中定义表模式(Plain mode)

在这种模式下,你可以在配置文件中指定表结构,Manticore 在启动时读取此模式,并在表不存在时创建表。这种模式特别适用于使用来自外部存储的数据的普通表(plain tables)

删除一张表,从配置文件中删除它或删除路径设置并向服务器发送HUP信号或重启它

在这种模式下,表名是区分大小写的

此模式支持所有表类型

表的类型和模式

表类型RT modePlain mode
实时表(Real-time)支持支持
普通表(Plain)不支持支持
渗透表(Percolate)支持支持
分布式表(Distributed)支持支持
模板表(Template)支持支持

实时表(Real-time table)

  • 多个磁盘块 - 这些保存在磁盘上,并且像一个普通的表格一样结构化。
  • 单个内存块 - 保存在内存中并收集所有更改

RAM块的大小由rt_mem_limit设置控制,一旦达到此限制,RAM块被传输到磁盘作为磁盘块。如果有太多的磁盘块,Manticore会将其中一些合并以提高性能。

创建实时表

SQL:

CREATE TABLE products(title text, price float) morphology='stem_en';

从已存在的表中复制表结构或数据

CREATE TABLE table_name LIKE old_table_name [WITH DATA]

可以用实时表做什么:

  • 添加文档
  • 使用 Update 更新属性和全文字段
  • 删除文档
  • 清空表
  • 在线使用 ALTER 命令更改架构,如“在线更改架构”中所述。
  • 在配置文件中定义表,详见“定义表”
  • 使用UUID功能进行自动ID分配

不能用实时表做什么:

  • 使用索引器功能摄取数据
  • 将其连接到源,以便从外部存储轻松索引
  • 更新 killlist_target,因为它是由实时表自动管理的
实时表文件结构

下表概述了不同的文件扩展名及其在实时表中的相应描述

文件扩展名描述
.lock一个锁定文件,确保一次只有一个进程可以访问该表
.ram表的RAM块,存储在内存中并用作更改的累加器
.meta定义实时表结构和设置的表头
.*.sp*存储在磁盘上的磁盘块与普通表具有相同的格式。当 RAM 块大小超过 rt_mem_limit 时创建这些块。

普通表(Plain table)

普通表是非渗透搜索的基本元素,只能在配置文件中使用Plain模式定义,并且不支持在RT模式下使用,通常与数据源结合使用,以处理来自外部存储的数据,并且可以稍后附加到实时表中。

创建普通表

要创建一个普通表,你需要在配置文件中定义它。这不支持CREATE TABLE命令。
以下是一个普通表配置和从MySQL数据库获取数据的来源的例子:

source source {
  type             = mysql
  sql_host         = localhost
  sql_user         = myuser
  sql_pass         = mypass
  sql_db           = mydb
  sql_query        = SELECT id, title, description, category_id  from mytable
  sql_attr_uint    = category_id
  sql_field_string = title
 }

table tbl {
  type   = plain
  source = source
  path   = /path/to/table
 }

可以用普通表做什么:

  • 从外部存储使用源和索引器构建它
  • 对整数、浮点数、字符串和MVA属性执行就地更新
  • 更新它的killlist_target

不可以用普通表做什么:

  • 在表构建完成后插入额外的数据
  • 从表中删除数据
  • 在线创建、修改或删除表
  • 使用UUID进行自动ID生成(来自外部存储的数据必须包含唯一标识符)

渗透表(percolate table)

渗透表是一种特殊表,用于存储查询而非文档,它用于前瞻性搜索或反向搜索

  • 要了解如何对percolate表执行搜索查询,请参阅“Percolate查询”部分。
  • 要了解如何准备用于搜索的表,请参阅“向渗透表添加规则”部分。

Percolate表的模式是固定的,包含以下字段

字段描述
ID一个具有自动增量功能的无符号64位整数。在添加PQ规则时可以省略,如添加PQ规则所述。
Query规则全文查询,可以将其视为 MATCH 子句或 JSON /search 的值。如果查询中使用了每个字段的操作符,则需要在 percolate 表配置中声明全文字段。如果存储的查询仅用于属性过滤(不包含全文查询),则查询值可以为空或省略。此字段的值应与创建 percolate 表时指定的文档模式相对应。
Filters可选的,过滤器是一个可选字符串,包含and/or表达式的属性过滤器,定义方式与WHERE子句或JSON过滤相同。此字段的值应对应于预期的文档模式,该模式在创建渗透表时指定。
Tags可选的,标签表示由逗号分隔的字符串标签列表,可用于过滤/删除PQ规则。在执行Percolate查询时,这些标签也可以与匹配的文档一起返回。

请注意在创建渗透表时不需要添加上述字段

在创建新的percolate表时,需要注意的是指定文档的预期模式,这将根据您稍后添加的规则进行检查。这与创建任何其他本地表的方式相同。
创建渗透表SQL语句:

CREATE TABLE products(title text, meta json) type='pq';

模板表(Template table)

模板表是 Manticore 中的一种特殊表,它不存储任何数据,也不会在您的磁盘上创建任何文件。尽管如此,它可以具有与普通表或实时表相同的 NLP 设置。模板表可用于以下目的

  • 作为在纯模式下继承设置的模板,简化您的 Manticore 配置文件
  • 使用CALL KEYWORDS命令生成关键词
  • 使用CALL SNIPPETS命令高亮任意字符串

模板表配置示例:

table template {
  type = template
  morphology = stem_en
  wordforms = wordforms.txt
  exceptions = exceptions.txt
  stopwords = stopwords.txt
}

http://www.kler.cn/a/381310.html

相关文章:

  • MySQL查询where中包含多个in条件问题
  • Redis常见面试题概览——针对实习面试
  • 【JAVA】Java基础—基础语法:数据类型(基本数据类型与引用数据类型)
  • 【STL栈和队列】:高效数据结构的应用秘籍
  • 单元测试(Junit)
  • 关于我的编程语言——C/C++——第四篇(深入1)
  • 华为 HarmonyOS NEXT 原生应用开发: Video实现在线离线视频播放、以及实现控制器控制视频操作。
  • springboot 写真促销系统-计算机设计毕业源码88753
  • electron 中 ipcRenderer 作用
  • HTML5的文本样式
  • 基于 JAVASSM(Java + Spring + Spring MVC + MyBatis)框架开发一个医院挂号系统
  • 加强版 第五节图像处理与视频分析
  • 使用kettle同步数据流程
  • 视频一键转换3D:Autodesk 发布 Video to 3D Scene
  • 跟李沐学AI:BERT
  • Angular引用控件类
  • unity 三维数学 ,角度 弧度计算
  • 小程序Android系统 校园二手物品交换平台APP
  • .net core mvc 控制器中页面跳转
  • 【PHP小课堂】一起学习PHP中的反射(二)
  • Chrome与火狐的安全功能全面评估
  • 红队知识学习入门(4)Windows病毒编写
  • Mac如何将多个pdf文件归并到一个
  • 【Java】集合详解及常见方法
  • CasaOS香橙派安装HomeAssistant智能家居系统并实现远程管理家中智能设备
  • Docker 镜像体积优化实践:从基础镜像重建到层压缩的全流程指南