gpt4 book ai didi

postgresql 查找相似词组

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

我有一个包含 A 列的表 1,其中存储了大约 100,000 个字符串 (varchar)。不幸的是,每个字符串都有多个用空格分隔的单词。此外,它们具有不同的长度,即一个字符串可以包含 3 个单词,而另一个字符串包含 7 个单词。

然后我将 B 列存储在第二个 table2 中,该表以相同的方式仅包含 100 个字符串。因此,每个字符串有多个单词,用空格分隔。

目标是,根据单词查看 B 列的一条记录与 A 列的可能多条记录匹配的可能性有多大。结果也应该有排名。我正在考虑在循环中使用全文搜索,但我不知道该怎么做,或者是否有适当的方法来实现这一点?

最佳答案

我不知道你是否可以将表格“tturn”成字典以使用全文在此处进行排名。但是您可以很容易地使用一些原始排名来查询它,例如:

t=# with a(a) as (values('a b c'),('a c d'),('b e f'),('r b t'),('q w'))
, b(i,b) as (values(1,'a b'), (2,'e'), (3,'b'))
, p as (select unnest(string_to_array(b.b,' ')) arr,i from b)
select a phrases,arr match_words,count(1) over (partition by arr) words_in_matches, count(1) over (partition by i) matches,i from a left join p on a.a like '%'||arr||'%';
phrases | match_words | words_in_matches | matches | i
---------+-------------+------------------+---------+---
r b t | b | 6 | 5 | 1
a b c | b | 6 | 5 | 1
b e f | b | 6 | 5 | 1
a b c | a | 2 | 5 | 1
a c d | a | 2 | 5 | 1
b e f | e | 1 | 1 | 2
r b t | b | 6 | 3 | 3
a b c | b | 6 | 3 | 3
b e f | b | 6 | 3 | 3
q w | | 1 | 1 |
(10 rows)
  • 短语是您大表中的行。
  • match_words 是您的小表中的标记(由空格分隔)
  • words_in_matches 短语中的标记数量
  • matches 是大表短语与小表短语的匹配数量
  • i 来自小表的短语索引

因此您可以按第三列或第四列排序以获得某种排名...

关于postgresql 查找相似词组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900121/

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