gpt4 book ai didi

django - PostgreSQL 和 Django 中的不精确全文搜索

转载 作者:行者123 更新时间:2023-11-29 11:29:32 24 4
gpt4 key购买 nike

我是 PostgreSQL 的新手,我不确定如何进行不精确 全文搜索。并不是说它太重要了,但我正在使用 Django。换句话说,我正在寻找类似以下内容的内容:

q = 'hello world'
queryset = Entry.objects.extra(
where=['body_tsv @@ plainto_tsquery(%s)'],
params=[q])
for entry in queryset:
print entry.title

条目列表应该包含完全“hello world”或类似的内容。然后应根据它们的值与指定字符串的距离对列表进行排序。例如,我希望查询包括包含“Hello World”、“hEllo world”、“helloworld”、“hell world”等的条目,并以某种排名表明每个项目与完美的差距,未更改的查询字符串。

你会怎么做?

最佳答案

你最好的选择是使用 Django raw querysets ,我将它与 MySQL 一起使用来执行全文匹配。如果数据都在数据库中,并且 Postgres 提供了匹配功能,那么使用它是有意义的。此外,Postgres 在全文查询的词干提取等方面提供了一些非常有用的东西。

基本上,它可以让您编写所需的实际查询,但返回模型(只要您显然是在查询模型表)。

这给您带来的好处是您可以测试您将首先在 Postgres 中使用的精确查询,the documentation很好地涵盖了全文查询。

目前原始查询集的主要问题是它们不支持计数。因此,如果您将返回大量数据并且您的应用程序有内存限制,您可能需要做一些聪明的事情。


然而,“不精确”匹配并不是全文搜索功能的真正组成部分。相反,你想要 postgres fuzzystrmatch贡献模块。它的用途是described here有索引。

关于django - PostgreSQL 和 Django 中的不精确全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5708855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com