小编dle*_*ech的帖子

当我使用完成建议器时,如何在没有重复的情况下获得独特的建议?

我在我的环境中使用弹性5.1.1.我已经在字段名称上选择了完成建议器,其中post_hashtags包含一个字符串数组,以便对其进行建议.我收到如下前缀"inv"的响应

所需物品:

POST hashtag/_search?pretty&&filter_path=suggest.hash-suggest.options.text,suggest.hash-suggest.options._source
{"_source":["post_hashtags" ],

"suggest": {
    "hash-suggest" : {
        "prefix" : "inv",
        "completion" : {
            "field" : "post_hashtags"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

回应:

{
  "suggest": {
    "hash-suggest": [
      {
        "options": [
          {
            "text": "invalid",
            "_source": {
              "post_hashtags": [
                "invalid"
              ]
            }
          },
          {
            "text": "invalid",
            "_source": {
              "post_hashtags": [
                "invalid",
                "coment_me",
                "daya"
              ]
            }
          }
        ]
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

这里"invalid"被返回两次,因为它也是其他文档中相同字段"post_hashtags"的输入字符串.

问题是如果相同索引中的1000个文档中存在相同的"无效"输入字符串,那么我将得到1000个重复的建议,这是巨大的,不需要.

我可以在类型完成的字段上应用聚合吗?

有没有什么方法可以得到唯一的建议而不是重复的文本字段,即使我有相同的输入字符串给同一索引的多个文档中的特定字段?

lucene elasticsearch search-suggestion

8
推荐指数
1
解决办法
2252
查看次数

在使用特定文化的同时进行排序 - "BB"可能在丹麦语和挪威语的"AA"之前排在第一位

今天我注意到C#中有一个有趣的排序行为.我有两个列表,我对它们进行排序:

var list1 = new List<string> { "A", "B", "C" };
var list2 = new List<string> { "AA", "BB", "CC" };
list1.Sort();
list2.Sort();
Run Code Online (Sandbox Code Playgroud)

这两个列表现在包含:

>> list1
[0]: "A"
[1]: "B"
[2]: "C"

>> list2
[0]: "BB"
[1]: "CC"
[2]: "AA"
Run Code Online (Sandbox Code Playgroud)

为什么AA放在最后?

这是一个演示:http://ideone.com/QCeUjx

.net c# sorting .net-4.0

5
推荐指数
1
解决办法
575
查看次数

计算重复发生的频率

在 Elasticsearch 中,我试图计算数据集中不同字段值的数量,其中字段值:

  • 只出现一次。
  • 出现两次或以上。

从某种意义上说,我试图计算重复发生的频率。我怎样才能做到这一点?

例子

假设我有以下 Elasticsearch 文档:

{ "myfield": "bob" }
{ "myfield": "bob" }
{ "myfield": "alice" }
{ "myfield": "eve" }
{ "myfield": "mallory" }
Run Code Online (Sandbox Code Playgroud)

由于“alice”、“eve”和“mallory”出现一次,而“bob”出现两次,我预计:

number_of_values_that_appear_once: 3
number_of_values_that_appear_twice_or_more: 1
Run Code Online (Sandbox Code Playgroud)

我可以通过术语聚合并查看doc_count每个存储桶的部分方式。术语聚合的输出myfield如下所示:

"buckets": [
  {
    "key": "bob",
    "doc_count": 3
  },
  {
    "key": "alice",
    "doc_count": 1
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

doc_count == 1例如,从这个输出中,我可以对桶的数量进行求和。但这无法扩展,因为我经常有数千个不同的值,因此遗愿清单将是巨大的。

distinct aggregation elasticsearch

5
推荐指数
1
解决办法
1980
查看次数

BigQuery argmax:执行 CROSS JOIN UNNEST 时是否保持数组顺序

问题:

在 BigQuery、标准 SQL 中,如果我运行

SELECT *
FROM mytable
CROSS JOIN UNNEST(mytable.array)
Run Code Online (Sandbox Code Playgroud)

我可以确定生成的行顺序与数组顺序相同吗?

例子:

假设我有下表mytable

Row | id   | prediction
1   | abcd | [0.2, 0.5, 0.3]
Run Code Online (Sandbox Code Playgroud)

如果我运行SELECT * FROM mytable CROSS JOIN UNNEST(mytable.prediction),我可以确定行顺序与数组顺序相同吗?即结果表将始终是:

Row | id   | unnested_prediction
1   | abcd | 0.2
2   | abcd | 0.5
3   | abcd | 0.3
Run Code Online (Sandbox Code Playgroud)

有关用例的更多背景信息(argmax):

我试图找到每行中数组的最大值(argmax)的数组索引,即0.5上面数组中的第二个元素()。因此,我的目标输出是这样的:

Row | id   | argmax
1   | abcd | 2
Run Code Online (Sandbox Code Playgroud)

使用按值排序的窗口函数CROSS JOIN和查找argmax 的窗口函数,我可以使用一些测试数据来实现此目的。您可以使用以下查询进行验证:DENSE_RANKpredictionROW_NUMBER …

arrays cross-join google-bigquery argmax

3
推荐指数
1
解决办法
3703
查看次数

重新初始化时,Three.js 3D立方体旋转速度越来越快

我试图理解这一点:每次重新初始化时,旋转3D立方体的第一个Three.js示例旋转速度越来越快.

代码具有init设置场景的animate功能和启动动画循环的功能.如果我多次拨打initanimate,我希望立方体完全复位,而是立方体每次它重新初始化时旋转的速度越来越快.

  • 为什么会这样?
  • 对象是否正确地重新初始化?
  • 它是three.js或JavaScript的功能吗?

这是一个JS小提琴,显示了我在说什么.我已将其设置为每两秒重新初始化一次:http: //jsfiddle.net/1hq2esLr/(在Firefox和Chrome中测试)

这是完整的代码:

var camera, scene, renderer,
    geometry, material, mesh;

function init() {
    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
    camera.position.z = 1000;

    geometry = new THREE.BoxGeometry( 200, 200, 200 );
    material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );

    mesh = new THREE.Mesh( geometry, material );
    scene.add( mesh );

    renderer = …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

1
推荐指数
1
解决办法
577
查看次数