我有一个表,其中有o(1m)行,有doc\u id和ent\u id列,其中(doc\u id,ent\u id)是主键。
+--------+--------+
| doc_id | ent_id |
+--------+--------+
| 1 | a |
| 1 | b |
| 1 | x |
| 1 | y |
| 2 | a |
| 3 | a |
| 3 | x |
| 3 | y |
| 4 | x |
| 4 | y |
+--------+--------+
我的问题是,如何有效地找到一组doc\u id(比如我需要1000或5000个doc\u id),其中在所选的doc\u id集合中存在最大的entid交集?
例如:在上表中,
假设我需要前2个doc\u id,其中它们的ent\u id之间存在最大交集。结果将是-doc\u id={1,3},其中[common ent\u id={a,x,y},common ent\u id count=3]
假设我需要前3个文档ID,它们的ent\U ID之间存在最大交集。结果将是-doc\u ids={1,3,4},其中[common ent\u ids={x,y},common ent\u ids count=2]
脚注—如果不能用sql高效地完成这项工作,那么在应用程序代码中实现这项工作的其他方法的任何方向也会有所帮助。比如说,转换成csv->一些数据结构[倒排索引?]/库+python代码->结果集。
暂无答案!
目前还没有任何答案,快来回答吧!