Django Postgres pg_trgm模块与djorm-ext-pgfulltext的全文搜索

2 投票
1 回答
673 浏览
提问于 2025-04-18 08:26

我在使用Django 1.6和Postgres数据库,以及一个叫做djorm-ext-pgfulltext的模块,想要进行全文搜索。我的目标是让搜索可以模糊匹配,比如搜索“app”时也能找到“apple”,而不是只匹配完全相同的单词。

我发现Postgres有一个叫做pg_trgm的模块(http://www.postgresql.org/docs/9.0/static/pgtrgm.html),它可以匹配搜索词中的三个连续字符。不过,我对如何在djorm-ext-pgfulltext中使用这个功能感到很困惑。我知道SearchManager()可以接受一个配置参数,但我不太确定该如何在里面使用pg_trgm。我也查看了如何创建自己的配置文件(点击这里查看),但我没有找到将pg_trgm整合进去的方法。

objects = SearchManager(
    fields = ('name', 'description'),
    config = 'pg_catalog.english', # this is default
    search_field = 'search_index', # this is default
    auto_update_search_field = True
)

1 个回答

1

我找到了一篇帖子,解决了我所有的问题。我只需要进入数据库,运行 CREATE EXTENSION pg_trgm; 这个命令就可以了。

Postgres中的相似度函数和pg_trgm

撰写回答