我目前正在通过FOQElasticaBundle在我的Symfony2应用程序中实现elasticsearch,到目前为止,基于对“
Story”实体的各个领域应用的提升,它的运行一直很好。这是配置:
foq_elastica:
clients:
default: { host: localhost, port: 9200 }
indexes:
website:
client: default
types:
story:
mappings:
title: { boost: 8 }
summary: { boost: 5 }
text: { boost: 3 }
author:
persistence:
driver: orm # orm, mongodb, propel are available
model: Acme\Bundle\StoryBundle\Entity\Story
provider:
query_builder_method: createIsActiveQueryBuilder
listener:
service: acme_story.search_index_listener
finder:
但是,我也想根据故事的“
published_at”日期进行调整,以使昨天发布的故事出现在6个月前发布的故事之前的结果中,即使较早的故事得分更高(显然,这需要一些调整)。这可能吗?
如果有人可以让我知道如何使用FOQElasticaBundle实现这一点,那还是不错的,但是如果您可以让我知道如何直接在Elasticsearch中实现这一点,那么我将不胜感激,以便我自己尝试实现这种行为,并为如果需要,请捆绑。
谢谢。
经过大量的实验和数小时的拖曳Interweb的努力,我终于设法达到了期望的行为!(值得称赞的是克林顿·戈姆利。)
映射配置:
mappings:
title: { boost: 8 }
summary: { boost: 5 }
text: { boost: 3 }
author:
publishedAt: { type: date }
以下是使用PHP客户端Elastica来动态构建查询以使用原始映射和发布日期进行增强的代码:
$query = new \Elastica_Query_Bool();
$query->addMust(new \Elastica_Query_QueryString($queryString));
$ranges = array();
for ($i = 1; $i <= 5; $i++) {
$date = new \DateTime("-$i month");
$currentRange = new \Elastica_Query_Range();
$currentRange->addField('publishedAt', array(
'boost' => (6 - $i),
'gte' => $date->getTimestamp()
));
$ranges[] = $currentRange->toArray();
}
$query->addShould($ranges);
/** @var $pagerfanta Pagerfanta */
$pagerfanta = $this->getFinder()->findPaginated($query);
对于那些对原始Elasticsearch查询更感兴趣的人(为简洁起见,仅使用3个日期范围)…
curl -XPOST 'http://localhost:9200/website/story/_search?pretty=true' -d '
{
"query" : {
"bool" : {
"must" : {
query_string: {
query: "<search term(s)>"
}
},
"should" : [
{
"range" : {
"publishedAt" : {
"boost" : 5,
"gte" : "<1 month ago>"
}
}
},
{
"range" : {
"publishedAt" : {
"boost" : 4,
"gte" : "<2 months ago>"
}
}
},
{
"range" : {
"publishedAt" : {
"boost" : 3,
"gte" : "<3 months ago>"
}
}
}
]
}
}
}'
我有这个nodeJS代码,但每当我发布数据时,最新的数据都会添加到末尾而不是开始。我试着添加
问题内容: 我正在尝试使用Jenkinsfile创建Jenkins工作流。我要做的就是监视’develop’分支中的更改。发生更改时,我希望它进行git标签并合并到master。我正在使用GitSCM步骤,但它似乎唯一支持的就是git clone。我不想掏出钱来做标记/合并,但我看不到解决办法。有人知道这是否可能吗?我在我的Git服务器上使用BitBucket(本地)。 问题答案: 目前尚不可能,
问题内容: 该ElasticSearch文件上写着: 别名也可以映射到多个索引,并且在指定别名时,别名将自动扩展为别名索引。 但是,当我尝试为2个索引添加别名并向两个索引写入时,似乎都没有随文档更新。如果删除其中一个别名,它将正确地写入仍然存在的别名。 具有多个写别名失败: 结果: 使用单个别名: 结果: Elasticsearch是否支持写入多个索引?如果别名指向多个索引,是否为只读? 问题答案
本文向大家介绍Ajax实现不刷新取最新商品,包括了Ajax实现不刷新取最新商品的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: HTML 的内容 实例2:根据输入的ID 获取商品信息 并修改 HTML端的内容 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!
我知道在elasticsearch中没有连接索引的选项,但我需要找到一种方法来解决这个问题: 我有两个索引,比如A,B IndexA的信息像field d1、field d2、field d3 IndexB有field d4、field d5、field d6 如果我将按查询字段5(在本例中为“test”)进行搜索,我希望树中的所有关系如下: 匹配IndexA中与“field2”(来自IndexA
问题内容: 我正在建立一个新的由AJAX驱动的网站,其中包含不同的部分。每个部分都需要一组新的Javascript函数才能运行。我宁愿不要一开始就加载每个脚本,因为可能会有很多脚本。 有没有一种方法可以使用AJAX加载新脚本并删除旧脚本(以确保类似的变量名或函数签名不存在兼容性问题)。 谢谢 编辑 -jQuery很好,它不必是老式的Javascript 问题答案: 三件事: 1)是,您可以加载新脚