给定主题图像的散列"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) 我正在设计一个城市建设游戏并遇到了问题.
想象一下Sierra的Caesar III游戏机制:你有很多城区,每个城市都有一个市场.距离上有几个粮仓与定向加权图相连.差异:人(这里是汽车)是形成交通拥堵的单位(这里是图表权重).
注意:在Ceasar游戏系列中,人们收获食物并将其储存在几个大粮仓中,而许多市场(小商店)从粮仓中取出食物并将其运送给市民.
任务:告诉每个地区他们应该从哪里获取食物,同时花费最少的时间并尽量减少城市道路上的拥堵.

假设黄色区域需要相应的7,7和4个苹果.蓝色粮仓相应地有7个和11个苹果.
假设边缘权重与其长度成比例.然后,解决方案应该类似于边缘上指示的灰色数字.例如,第一区从1号获得4个苹果,从第2个粮仓获得3个苹果,而最后一个区从第2个粮仓获得4个苹果.
在这里,垂直道路首先被占用到最大值,然后剩余的工人被送到对角线路径.
我应该使用哪种实用且非常快速的算法?我正在看一些描述拥堵游戏的论文(拥堵游戏:竞争优化等),但无法全面了解.
我有一个具有布尔字段的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) 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之旅有关:明确输入的自我引用?
如何将一些代码应用于管理员列表视图中显示的每个实体?
例如,如果我有一个TagManager并且需要为正在显示的每个实体加载标签,我该怎么做?是否有一种方法可以覆盖实体的管理员,还是可以绑定到某些列表格式事件?我找不到一个可以做到的地方.
我不想绑定到实体的onLoad事件.
symfony ×2
algorithm ×1
doctrine-orm ×1
graph ×1
image ×1
path-finding ×1
phash ×1
scala ×1
sonata-admin ×1