首页 > 解决方案 > 为模糊 FTS + Typeahead 查询 Django Postgres

问题描述

我将 PostgreSQL 12.3 与 Django 3.0.8 一起使用。我正在尝试实现提前输入功能。我尝试使用 Trigram 相似性,但效果不太好,因为如果我有一个文本说“椅子”,我必须在得到结果之前输入“cha”。

我正在使用 corejavascript/twitter 的 typeahead JS 库。他们的第一个示例(基础知识)允许您输入单个字母并立即获得结果,其中一些甚至不是单词的前缀。

我该怎么做?您可以在此处查看我当前的功能:https ://github.com/Donate-Anything/Donate-Anything/blob/76348e9362d386d3d6375b9a75d47d5765960992/donate_anything/item/views.py#L21-L30

我认为我应该将 to_tsvector 与 SearchVectorField 一起使用,但是当我实现它时(使用这样的查询:

queryset = (
        Item.objects.defer("is_appropriate")
        .filter(name_search=str(query))
    )

然后我什至看不到结果,直到我输入完整的单词。那时我的实现会是什么样子?(实现 SearchVectorField 触发器的文章

标签: djangopostgresqlfull-text-searchtypeahead.js

解决方案


推荐阅读