问题标签 [range-query]
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.
elasticsearch - 与特定过滤器结合使用时,Elasticsearch 范围查询慢匹配
我试图弄清楚为什么我们的新集群很慢并且发现了一些奇怪的东西。
执行此操作时:
并检查分析,看起来它在“匹配”中花费了很多时间:
如果运行以下查询,它会过滤另一个字段(相同的映射),它根本不使用任何字段match
:
现在它只花了一些时间advance
(匹配为 0):
两者root_id
和reference_id
都被映射为long
(将更改为keyword
我认为它至少会更快)。
现在,这两个查询正在过滤不同的字段,但仍然是相同类型的字段,为什么它会在第一个查询中进行缓慢的“匹配”?有任何想法吗?我能以某种方式弄清楚吗?另外,它为什么要进行“匹配”?我只做过滤所以不应该做评分,对吧?
xquery - MarkLogic:如何在约束中管理附加查询
MarkLogic 9.0.8
在 UI 上,除了搜索文本外,很少应用过滤器,包括发布日期年份。由于我们无法控制最终用户如何在多行文本框中编写查询。
所以最后查询看起来像
- AU:Manish AND PY:>=2001 AND CT:Control AND UT:uncontrol AND PY:<=2010
- (AU:Manish AND PY:>=2001) OR (CT:Control AND UT:uncontrol AND PY:<=2010)
- AU:Manish AND CT:Control AND UT:uncontrol AND PY:>=2001 AND PY:<=2010
到目前为止,我们在查询的末尾处理了年份范围,并且正在使用以下代码
Qyery: AU:Manish AND CT:Control AND UT:uncontrol OR PY:>=2001 AND PY:<=2010
但是现在由于用户可以将年份范围放在查询文本中的任何位置,因此它无法按预期工作
那么我们可以直接在约束中写入条件以及如何在其中放入额外的查询吗?
预期行为
如果用户通过年份范围,则应返回给定范围内的文档,否则将不适用年份范围
java - Lucene LongPoint Range 搜索不起作用
我在 Java 11 中使用 Lucene 8.2.0。
我正在尝试索引一个Long
值,以便我可以使用范围查询对其进行过滤,例如:+my_range_field:[1 TO 200]
. 但是,它的任何变体,甚至,都会在这个最小示例中my_range_field:[* TO *]
返回结果。0
一旦我从中删除+
它以使其成为OR
,我就会得到2
结果。
所以我想我在索引它的方式上一定犯了一个错误,但我无法弄清楚它可能是什么。
从LongPoint
JavaDoc:
用于快速范围过滤器的索引长字段。如果您还需要存储该值,则应添加一个单独的 StoredField 实例。在搜索时查找 N 维形状或范围内的所有文档是有效的。一个文档中的同一字段允许有多个值。
这是我的最小示例:
arrays - 范围 (l, r) 中小于 'x' 的元素数
给定一个整数数组,并且存在单一类型的查询。
查询 - (L, R, X)
在 (L, R) 范围内找到小于 'X' 的元素。
PS:所有查询都是事先提供的,即我们需要设计一个离线算法来回答所有查询。
algorithm - CSES范围查询问题:薪资查询
我正在尝试解决这个问题:https ://cses.fi/problemset/task/1144/
给定一个最多包含最多元素的数组200000
,我的任务是处理最多200000
查询,这些查询要么要求我更新数组中的单个值,要么要求我查找 a 和 b 之间位于给定范围内的元素数(例如例如,查询会询问从索引1
到有多少元素5
在范围内[2, 3]
)。
我目前的想法是首先对给定数组中的值使用索引压缩(因为值可以高达10^9
,所以保留一个简单的出现数组会超过存储限制),然后保留另一个数组,其中包含每个压缩的出现次数数字。然后,可以使用求和段树来处理和更新查询。
但是,我在尝试实施这种方法时遇到了问题。我意识到更新单个数组值会迫使我更改压缩数组。
例如,给定一个数组[1, 5, 3, 3, 2]
,我将定义一个压缩函数C
,使得
然后,出现数组将是[1, 1, 2, 1]
,并且处理求和查询将是有效的。但是,如果我被指示更新一个值,例如,将第三个元素更改为4
,那么这会使一切失去平衡。压缩函数必须更改为
这将迫使我重建我的发生数组,从而导致O(N)
更新时间。
由于N
可以达到200000
,我目前的方法无法有效地解决问题,尽管我认为我对索引压缩有正确的想法。有人可以用我的方法指出我正确的方向吗?
mysql - Rails 在午夜查询只有时间的列
我正在使用 Rails 6.0.2 和 MySQl 5.7 版。
在 camera_events 表上,我有一个start_time和一个end_time列,它们都是时间数据类型,因为我不需要日期,我只需要知道事件何时开始以及何时结束。
我正在尝试查询表以获取在 start_time 和 end_time 之间发生的所有事件。问题是任何时间跨度跨越午夜或将end_time设置为午夜的事件,因为它在数据库中记录为00:00。
我的问题是试图找到介于某个时间(如 22:00 和 02:00)之间的任何事件。
python - python的二维圆形范围搜索(查找圆圈中的所有点)库?
所以问题如下:给定数据库中的 N 个点(编辑:暂时假设它是 2 个数组 x[] 和 y[]),每个数组都有坐标(x[i], y[i])
,查询格式(X,Y,R)
,列出圆中的所有点 center (X,Y)
,半径R
。
编辑 - 输入约束: x=[-180,180], y=[-180,180]
哪个 Python 库可以最快的方式解决这个问题?我正在寻找O(log(N) + K)
每个查询的时间复杂度和<= O(n * log(N)^2)
空间要求,K
输出长度在哪里。
解决方案0: 循环N个点,用毕达哥拉斯检查。
- >内存:O(N)
。每次查询的时间:O(N)
解决方案 0.1:
与上面相同,但添加了一些小东西,例如按 排序x
,并使用二进制搜索开始仅搜索坐标为 的点x[i] >= X - R
。使用平方距离而不是距离等
-> 每次查询的时间:仍然O(N)
但更快
解决方案 1四叉树。假设点以 (0,0) 为中心。树的根节点在 (0,0),包含 2D 空间(x=[-inf,inf],y=[-inf,inf])
。每个节点有 4 个孩子:每个孩子包含父亲的 1/4 象限。因此,每当我们降低一个级别时,搜索空间就会减少 75%。继续往下走,直到当前节点在查询圈之外,或者不包含数据点。-> 记忆:也许O(n * log(N)^2)
?, 时间:~~O(log(N)^2)
他们的任何 python 库是否已经解决了这个问题?
java - # 网格中最小值为 88 的子网格数
假设有一个 n × n 数组,其中 n 作为输入。数组中的数字也在输入中作为 n 行给出,每行有 n 个元素。此外,n 可以在 1 到 450 之间,并且数组中的每个数字(让我们将每个数字定义为 f(i,j) 可以在 1 到 200 之间。现在我们要找出有多少矩形子网格,使得f 的最小值正好是 88。所以程序应该找出这些子网格有多少。子网格可以只是一个元素,也可以是整个数组。
首先,我们知道任何给定数组中都有(n^2(n + 1)^2)/4 个子网格。找出一种使用有效算法编写此程序的方法。时间复杂度应低于 10^7,空间复杂度应低于 10^{10}。如您所见,它必须是一种有效的算法。(使用Java)
3 * 3 数组的一些示例输入是其中 n(在本例中为 3)是第一行,接下来的 n 行构成组成数组的 n 个数字:
那么输出将是:4
algorithm - 数组范围查询优于范围查询
我正在使用 Fenwick 树(方法 4)解决 geeksforgeeks 问题https://www.geeksforgeeks.org/array-range-queries-range-queries/,但无法理解解决方案。为什么我们要使用该查询的 l 和 r 迭代查询类型 2。这里 L 和 R 表示查询 L 到查询 R 的查询数组。有人可以帮我解决这个问题吗?提前致谢。