您好我正在尝试在包含数组的表上使用 pg_trgm 实现某种模糊字符串匹配jsonb
,这是一个示例数据:
name
------------------
[{"firstname": "jhon", "lastname": "doe"},{"firstname": "jhonny", "lastname": "doe"}]
------------------
[{"firstname": "jane", "lastname": "doe"},{"firstname": "janne", "lastname": "doe"}]
这是我当前查询的示例:
SELECT * FROM persons WHERE exists(
SELECT * FROM json_array_elements(persons.name::json)
WHERE word_similarity('jhon', (COALESCE(value->>'firstname', '') || ' ' || (COALESCE(value->>'lastname', ''))) ) >= 0.7);
它可以完成这项工作,但速度很慢(没有索引)。我的问题是我可以做些什么来加快搜索(索引,替代查询)?TIA