小编Tau*_*kas的帖子

在Elasticsearch中通过pHash距离搜索类似的图像

类似的图像搜索问题

  • 数百万张图像在Elasticsearch中进行了标记和存储.
  • 格式为"11001101 ... 11"(长度64),但可以更改(最好不要).

给定主题图像的散列"100111..10",我们希望在汉明距离为8的 Elasticsearch索引中找到所有相似的图像散列.

当然,查询可以返回距离大于8的图像,Elasticsearch或外部的脚本可以过滤结果集.但总搜索时间必须在1秒左右.

我们目前的映射

每个文档都有images包含图像哈希的嵌套字段:

{
  "images": {
    "type": "nested", 
    "properties": {
      "pHashFingerprint": {"index": "not_analysed", "type": "string"}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我们的穷解决方案

事实: Elasticsearch模糊查询仅支持最大2的Levenshtein距离.

我们使用自定义标记生成器将64位字符串拆分为4组16位,并使用4个模糊查询进行4组搜索.

分析:

{
   "analysis": {
      "analyzer": {
         "split4_fingerprint_analyzer": {
            "type": "custom",
            "tokenizer": "split4_fingerprint_tokenizer"
         }
      },
      "tokenizer": {
         "split4_fingerprint_tokenizer": {
            "type": "pattern",
            "group": 0,
            "pattern": "([01]{16})"
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后新的字段映射:

"index_analyzer": "split4_fingerprint_analyzer",
Run Code Online (Sandbox Code Playgroud)

然后查询:

{
   "query": {
      "filtered": {
         "query": {
            "nested": {
               "path": "images",
               "query": {
                  "bool": …
Run Code Online (Sandbox Code Playgroud)

image hamming-distance elasticsearch phash

36
推荐指数
4
解决办法
8316
查看次数

用于在游戏中寻找食物分配的最佳路线的算法

我正在设计一个城市建设游戏并遇到了问题.

想象一下Sierra的Caesar III游戏机制:你有很多城区,每个城市都有一个市场.距离上有几个粮仓与定向加权图相连.差异:人(这里是汽车)是形成交通拥堵的单位(这里是图表权重).

注意:在Ceasar游戏系列中,人们收获食物并将其储存在几个大粮仓中,而许多市场(小商店)从粮仓中取出食物并将其运送给市民.

任务:告诉每个地区他们应该从哪里获取食物,同时花费最少的时间并尽量减少城市道路上的拥堵.

地图示例

示例图表

假设黄色区域需要相应的7,7和4个苹果.蓝色粮仓相应地有7个和11个苹果.

假设边缘权重与其长度成比例.然后,解决方案应该类似于边缘上指示的灰色数字.例如,第一区从1号获得4个苹果,从第2个粮仓获得3个苹果,而最后一个区从第2个粮仓获得4个苹果.

在这里,垂直道路首先被占用到最大值,然后剩余的工人被送到对角线路径.

我应该使用哪种实用且非常快速的算法?我正在看一些描述拥堵游戏的论文(拥堵游戏:竞争优化等),但无法全面了解.

algorithm graph mathematical-optimization path-finding

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

我应该在布尔学说字段中添加断言验证吗?

我有一个具有布尔字段的Doctrine实体.我应该为它添加Symfony验证(对于类型布尔值),还是通过自动推断类型来正确验证我的表单?

class Entity
{
    /**
     * @ORM\Column(type="boolean")
     * @Assert\.... <- do I have to apply any Symfony assertion here?
     */
    private $isActive;
}
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm

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

Scala:覆盖集合类型

class AbstractNode

class Node extends AbstractNode {
  def update() {
    // update something here
  }
}

class AbstractGraph {
  val allNodes = ArrayBuffer[AbstractNode]()
}

class Graph extends AbstractGraph {
  override val allNodes = ArrayBuffer[Node]()
  def updateAll() {
    allNodes.foreach(_.update())
  }
}
Run Code Online (Sandbox Code Playgroud)

以上产生错误:

overriding value allNodes in class AbstractGraph of type scala.collection.mutable.ArrayBuffer[AbstractNode];
value allNodes has incompatible type
override val allNodes = ArrayBuffer[Node]()
             ^
Run Code Online (Sandbox Code Playgroud)

update向Node 添加方法的正确方法是什么?这与Scala之旅有关:明确输入的自我引用

scala

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

如何在SonataAdminBundle列表视图中处理每个实体?

如何将一些代码应用于管理员列表视图中显示的每个实体?

例如,如果我有一个TagManager并且需要为正在显示的每个实体加载标签,我该怎么做?是否有一种方法可以覆盖实体的管理员,还是可以绑定到某些列表格式事件?我找不到一个可以做到的地方.

我不想绑定到实体的onLoad事件.

symfony symfony-sonata sonata-admin

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