Django Postgres pg_trgm模块与djorm-ext-pgfulltext的全文搜索
我在使用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;
这个命令就可以了。