模式定义
如何定义索引的模式。
索引结构由模式定义。模式指定字段、字段类型、是否应索引或存储以及其他附加配置选项。通过正确配置模式,您可以优化搜索性能并控制索引的存储要求。
FT.CREATE idx
ON HASH
PREFIX 1 blog:post:
SCHEMA
title TEXT WEIGHT 5.0
content TEXT
author TAG
created_date NUMERIC SORTABLE
views NUMERIC
在这个示例中,我们为名为idx
的索引定义了一个模式,它将索引所有键名以blog:post:
开头的哈希文档。该模式包含title
、content
、author
、created_date
和views
字段。TEXT
类型表示title
和content
字段是基于文本的,TAG
类型用于author
字段,NUMERIC
类型用于created_date
和views
字段。此外,title
字段被赋予了5.0的权重,使其在搜索结果中更具相关性,created_date
被标记为SORTABLE
,以允许根据此字段进行排序。
您可以在FT.CREATE
页面上了解更多关于可用字段类型和选项的信息。
更多模式定义示例
使用分隔符索引标签
索引具有categories
属性的书籍,其中每个类别之间用;
字符分隔。
FT.CREATE books-idx
ON HASH
PREFIX 1 book:details
SCHEMA
title TEXT
categories TAG SEPARATOR ";"
以多种方式索引单个字段
将哈希中的sku
属性同时索引为TAG
和TEXT
。
FT.CREATE idx
ON HASH
PREFIX 1 blog:post:
SCHEMA
sku AS sku_text TEXT
sku AS sku_tag TAG SORTABLE
索引具有多个前缀的文档
索引两个不同的哈希,一个包含作者数据,另一个包含书籍数据。
FT.CREATE author-books-idx
ON HASH
PREFIX 2 author:details: book:details:
SCHEMA
author_id TAG SORTABLE
author_ids TAG
title TEXT name TEXT
在这个示例中,作者数据的键使用键模式author:details:<id>
,而书籍数据的键使用模式book:details:<id>
。
仅当字段指定特定值时使用FILTER
索引文档。
索引姓名以G开头的作者。
FT.CREATE g-authors-idx
ON HASH
PREFIX 1 author:details
FILTER 'startswith(@name, "G")'
SCHEMA
name TEXT
仅索引具有副标题的书籍。
FT.CREATE subtitled-books-idx
ON HASH
PREFIX 1 book:details
FILTER '@subtitle != ""'
SCHEMA
title TEXT
使用JSONPath表达式索引JSON文档。
索引具有title
和categories
字段的JSON文档。title
字段被索引为TEXT
,categories
字段被索引为TAG
。
FT.CREATE idx
ON JSON
SCHEMA
$.title AS title TEXT
$.categories AS categories TAG
您可以在FT.CREATE
页面上了解更多关于可用字段类型和选项的信息。