问题标签 [pg-trgm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - pg_trgm,相似性和通过他们的答案找到重复的问题
我有一张名为Questions
. 它具有content
字段(包含一个问题)和一个answer
字段。整个表大约有 22k 行,我正在尝试弄清楚如何根据常见答案搜索重复的问题(尽管我愿意接受更好的建议)。
基本上我想找出一种方法来在某个概率范围内找到可能的重复行。
例如,我有 132 个答案,其中有超过 5 个与它们相关的问题。我该如何比较这些问题以清除可能的重复问题?我可以使用类似的东西similarity
按分组比较所有问题answers
吗?我只是不太确定这将如何工作,或者是否有更好的方法来追踪这些。
任何指针或建议将不胜感激。
postgresql - Trigram 索引 ORDER BY 优化
我正在尝试实现一个搜索功能,经过一些调查(请参阅Yorick Peterse 在 GitLab 的这篇有趣的阅读文章),我决定选择使用pg_trgm
扩展的三元组方法。
我想返回 10 个最相关的行。
以下是我针对具有 110868 行的表测试的几个查询(在 doc之后):
使用 GiST 索引:
使用 GIN 索引:
使用解释分析:
使用 GIN 索引可以显着提高性能。然而,将结果限制为 10 行似乎没有任何影响。
还有我没有考虑的改进空间吗?我对可以利用我只需要整个表的一小部分这一事实的建议特别感兴趣。
python - 如何在 django 框架中使用 pg_trgm 操作符(例如 %>)?
我pg_trgm
在 PostgreSQL DB 上使用相似度搜索,我需要使用 Django 模型将结果返回到前面。但是,我遇到了一个问题,即%>
Django 框架无法识别操作员。
有什么建议吗?
谢谢你。
我使用model.objects.raw()
来执行 SQL。我得到一个错误响应:
postgresql - 使用 pg_trgm 在单列行上查找模糊重复项
我试图在列行上查找重复项,但由于它们很模糊(值不同、拼写错误、缩进空间),我必须使用 pg_trgm 扩展和similarity() 函数来找到它们。问题是:即使我放置了所有可能的索引,这个查询也很长而且效率很低。
我的设置:PostgreSQL 11 pg_trgm 启用了表名:
此表中有近 10k 行,只是为了了解我正在处理的内容。
我创建了这个索引:
并运行了这个查询(除了自连接,我没有找到任何其他方法来将列行与自身进行比较)
该死的,花了1200多秒还没有完成!(实际上,这并不是很意外,因为我在查询时得到了这个解释):
我觉得我错过了一些简单且几乎愚蠢的东西,但我找不到确切的东西。任何有关如何在单列中查找模糊重复项的提示将不胜感激!谢谢 :)
django - 使用 TrigramSimilarity 进行 Django Postgres 搜索
如果我在我的 post_search 函数中使用“标题”,它会完美运行。
虽然如果我尝试搜索“正文”而不是“标题”,我得到 0 个结果。
它应该可以完美地工作,就像我查看 TrigramSimilarity 文档一样,关键字选择是:作者、作者 ID、正文、评论、创建、id、发布、slug、状态、tagged_items、标签、标题、更新。
有没有人经历过这样的事情?
postgresql - 未使用 Postgres `gin_trgm_ops` 索引
我正在尝试使用扩展名加速Postgres 中的一些文本匹配pg_trgm
:
现在我查询这个表ILIKE
:
为了查看索引是否会加快速度,我在和列pg_trgm
上都添加了:key
value
但是查询仍然需要相同的时间,并EXPLAIN ANALYZE
显示索引根本没有被使用:
注意顺序扫描。是什么赋予了?
postgresql - 如何制作快速的 pg_trgm DESC(降序)?
我在一个表中有一个包含 100.000 个句子的列表,使用pg_trgm我可以使用 GIN/GIST 索引非常快地获得我的字符串“super cool”中最接近的句子。见官方例子:
https://www.postgresql.org/docs/11/pgtrgm.html
可悲的是,我想要相反,我想要最不同的一个,但是DESC时不使用 GIN/GIST 索引,所以它很慢。
我怎么能那样做?从源代码重建pg_trgm?如何 ?
postgresql - PostgreSQL 中的 Edge NGram 搜索
我需要为大量公司(超过 80,000,000 家)进行搜索时自动完成。公司名称应包含以这样的搜索查询开头的单词
pg_trgm模块和GIN 索引实现了类似的行为,但不能解决我的问题。
例如,ElasticSearch 具有完全符合我要求的Edge NGram Tokenizer功能。
从文档:
PostgreSQL中是否有类似的解决方案?
postgresql - 多列上的 trigram 索引是否会使搜索更快以及如何正确进行此类搜索?
假设我有一个包含多列的表。例如:
示例记录将是
我想搜索所有这些表数据的相关性,如下所示:
有什么方法可以加快搜索速度吗?创建三元索引?如果是这样 - 如何更好地创造它?在一列上,在每一列上,在连接表达式上?另外,我不明白哪种类型的索引更好——GIN 或 GiST。我读过 GIN 通常更适合常规全文搜索,但 GiST 更适合 trigram 搜索。那是对的吗?
我还想问是否有更好的方法来编写上述查询?
如果有人想知道我为什么选择 trigram 而不是常规的全文搜索 - 这是因为搜索字符串将来自处理一些用户输入,因此可能会出现错误,甚至可能会出现错误,甚至会出现英文“o”或“c”被西里尔字母替换的情况。我的数据库记录或搜索也可以包含字母数字数据,这也可以用三元组更好地处理。