gpt4 book ai didi

sql - 高效计算 SQL 中的重要术语

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

有人介绍我使用 ElasticSearch significant terms aggregation不久前,我对这个指标的好坏和相关性感到非常惊讶。对于那些不熟悉它的人来说,这是一个非常简单的概念 - 对于给定的查询(前景集),根据背景集的统计显着性对给定的属性进行评分。

例如,如果我们要查询英国交通警察中最严重的犯罪类型:

C = 5,064,554 -- total number of crimes
T = 66,799 -- total number of bicycle thefts
S = 47,347 -- total number of crimes in British Transport Police
I = 3,640 -- total number of bicycle thefts in British Transport Police

Ordinarily, bicycle thefts represent only 1% of crimes (66,799/5,064,554) but for the British Transport Police, who handle crime on railways and stations, 7% of crimes (3,640/47,347) is a bike theft. This is a significant seven-fold increase in frequency.

“自行车盗窃”的意义是 [(I/S) - (T/C)] * [(I/S)/(T/C)] = 0.371...

地点:

  • C是集合中所有文档的个数
  • S 是匹配查询的文档数
  • T 是具有特定术语的文档数
  • I 是同时与 ST
  • 相交的文档数

出于实际原因(我拥有的大量数据和巨大的 ElasticSearch 内存需求),我希望在 SQL 中或直接在代码中实现重要术语聚合。

我一直在寻找一些可能优化此类查询的方法,特别是降低内存需求和提高查询速度,但代价是一些错误率 - 但到目前为止我还没有破解它。在我看来:

  • 变量CS 很容易缓存或查询。
  • 变量T 可以派生自Count-Min Sketch而不是查询数据库。
  • 然而,变量 I 似乎无法通过 T 的 Count-Min Sketch 导出。

我也在看 MinHash , 但从描述来看似乎不能在这里应用。

有没有人知道一些有助于解决这个问题的聪明算法或数据结构?

最佳答案

我怀疑 SQL impl 会更快。C 和 T 的值由 Lucene 提前维护。S 是从查询结果派生的简单计数,使用 O(1) 数据结构查找 I。主要成本是对所选字段中观察到的每个术语进行多次 T 查找。使用 min_doc_count 通常有助于大大减少这些查找的次数。

For practical reasons (the sheer amount of data I have and huge ElasticSearch memory requirements

您是否研究过使用文档值来更好地管理 elasticsearch 内存?参见 https://www.elastic.co/blog/support-in-the-wild-my-biggest-elasticsearch-problem-at-scale

关于sql - 高效计算 SQL 中的重要术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598004/

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