我编写了以下函数来使用boost.date_time获取日期/时间字符串.
namespace bpt = boost::posix_time;
string
get_date_time_string(bpt::ptime time)
{
bpt::time_facet * facet(new bpt::time_facet);
facet->format("%Y%m%d%H%M%S");
stringstream return_value;
return_value.imbue(std::locale(std::locale::classic(), facet));
return_value << time;
return return_value.str();
}
Run Code Online (Sandbox Code Playgroud)
我对所有权/一个简单的问题delete了的"ING facet对象.std :: locale的构造函数没有明确的所有权/ delete' facet.尝试使用shared_ptr-wrapped和堆栈分配版本facet- 两者都导致了seg-fault.此外,通过valgrind运行上述函数并没有显示任何泄漏(这可能意味着语言环境或流正在delete处理),但我只是想清楚我在这里做正确的事情.谢谢.
我有一个多方面的情节,数据非常多样化.所以有些方面只有1个x值,但有些方面有13个x值.我知道有一个参数space='free'可以通过它代表的数据调整每个方面的宽度.
我的问题是,是否有可能手动调整此空间?由于我的一些方面很小,因此无法再读取刻面中的标签.我做了一个可重复的例子来说明我的意思.
df <- data.frame(labelx=rep(c('my long label','short'), c(2,26)),
labely=rep(c('a','b'), each=14),
x=c(letters[1:2],letters[1:26]),
y=LETTERS[6:7],
i=rnorm(28))
ggplot(df, aes(x,y,color=i)) +
geom_point() +
facet_grid(labely~labelx, scales='free_x', space='free_x')
Run Code Online (Sandbox Code Playgroud)
因此,根据您的屏幕,my long labelfacet会被压缩,您无法再读取标签.
我在互联网上发现了一个似乎完全符合我想做的帖子,但这似乎已经不再适用了ggplot2.该帖子是2010年.
https://kohske.wordpress.com/2010/12/25/adjusting-the-relative-space-of-a-facet-grid/
他建议使用facet_grid(fac1 + fac2 ~ fac3 + fac4, widths = 1:4, heights = 4:1),所以widths并heights手动调整每个面大小.
我遇到了一种情况,我希望创建一个由三个分组变量构成的图.要做到这一点,我会简单地使用facet_grid(f1 ~ f2 + f3),但问题是f2的标签是多余的,并且让它们跨越f3嵌套的f3的方面会更好.
MWE:
library('tibble')
library('ggplot2')
df <- tribble(
~x, ~y, ~f1, ~f2, ~f3,
0.5, 0.5, "a", "a", "a",
0.5, 0.5, "b", "a", "a",
0.5, 0.5, "a", "b", "a",
0.5, 0.5, "b", "b", "a",
0.5, 0.5, "a", "a", "b",
0.5, 0.5, "b", "a", "b",
0.5, 0.5, "a", "b", "b",
0.5, 0.5, "b", "b", "b"
)
p <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
facet_grid(f1 ~ f2 + f3)
Run Code Online (Sandbox Code Playgroud)
同样,我希望将f2的标签组合在一起,这样它们就不那么多余了.
编辑:这与其他问题的不同之处在于,它询问如何使用现有分组修改构面而不是添加新构图.
我想在solr响应的过滤器查询(fq)中传递逗号分隔值,目前当我想传递多个类别时我使用OR运算符.像这样fq = categoryId:3 OR categoryId:55 OR categoryId:34
是否有任何传递值的解决方案,如fq = categoryId:3,55,34
我有一个父Maven项目(使用java facet版本1.7),其中包括一些模块.我从Eclipse Juno SR1收到以下警告:
Implementation of project facet java could not be found. Functionality will be limited (Unknown Faceted Project Problem)
我怎样才能摆脱这个错误?快速修复没有找到任何东西.有趣的是,我没有Project Properties对话框中的Project Facet条目.
我想在一个刻面的情节中添加一个方面标题作为条带ggplot2.我的MWE抛出一个错误.任何帮助将受到高度赞赏.谢谢
library(ggplot2)
library(gtable)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <- p + facet_grid(. ~ cyl)
# get gtable object
Plot1 <- ggplot_gtable(ggplot_build(p))
# add label for top strip
Plot1 <- gtable_add_rows(Plot1, Plot1$heights[[3]], 2)
Plot1 <- gtable_add_grob(Plot1,
list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))),
textGrob("Cyl", gp = gpar(col = gray(1)))),
3, 4, 3, 10, name = paste(runif(2)))
# add margins
Plot1 <- gtable_add_rows(Plot1, unit(1/8, "line"), 2)
# draw it
grid.newpage()
print(grid.draw(Plot1))
Run Code Online (Sandbox Code Playgroud) 在我们的一个新的项目,我们在这篇文章的启发http://project-a.github.io/on-site-search-design-patterns-for-e-commerce/#generic-faceted-search做我们的"facet"结构.虽然我已经在文章描述的范围内使用它,但是在选择方面时我遇到了让它工作的问题.我希望有人能给出一些可以尝试的提示,所以我不必再将所有聚合重做为单独的聚合计算.
问题基本上是我们使用单个聚合一次计算所有"方面",但是当我添加过滤器(fx.检查品牌名称)时,它会在返回聚合时"删除"所有其他品牌.我基本上想要的是它在计算其他方面时应该使用该品牌作为过滤器,但在计算品牌聚合时则不然.这是必要的,因此用户可以选择多个品牌.
看看https://www.contorion.de/search/Metabo_Fein/ou1-ou2?q=Winkelschleifer&c=bovy(这是上面文章中描述的网站),我选择了"Metabo"和"Fein"制造商( Hersteller),并展示了Hersteller菜单,它显示了所有制造商,而不仅仅是所选择的制造商.所以我知道它有可能以某种方式,我希望有一个关于如何编写聚合/过滤器的提示,所以我得到了"正确的电子商务方面行为".
在ES中的产品我有以下结构:(与原始文章相同,但在命名时使用"C#"ified)
"attributeStrings": [
{
"facetName": "Property",
"facetValue": "Organic"
},
{
"facetName": "Property",
"facetValue": "Without parfume"
},
{
"facetName": "Brand",
"facetValue": "Adidas"
}
]
Run Code Online (Sandbox Code Playgroud)
所以上面的产品有2个属性/方面组 - 属性有2个值(有机,没有香水)和品牌有1个值(阿迪达斯).没有任何过滤器,我从以下查询计算聚合:
"aggs": {
"agg_attr_strings_filter": {
"filter": {},
"aggs": {
"agg_attr_strings": {
"nested": {
"path": "attributeStrings"
},
"aggs": {
"attr_name": {
"terms": {
"field": "attributeStrings.facetName"
},
"aggs": {
"attr_value": {
"terms": {
"field": "attributeStrings.facetValue",
"size": 1000,
"order": [
{
"_term": "asc"
}
]
} } } } } …Run Code Online (Sandbox Code Playgroud) 假设我想在我的文档中对两个字段的组合进行分面.
例如:
Field1 Field2
A B
C D
A B
A C
C B
C D
Run Code Online (Sandbox Code Playgroud)
会有像小平面的结果
AB [2]
CD [2]
AC [1]
CB [1]
Run Code Online (Sandbox Code Playgroud)
这可能吗?我的意思是在飞行中,这意味着字段是随机选取的,因此在索引期间无法创建复制域.
我的solr架构中有以下两个字段:
<field name="brand_id" type="string" indexed="true" stored="true" />
<field name="category_id" type="string" indexed="true" stored="true" />
Run Code Online (Sandbox Code Playgroud)
当我提出启用了facet的请求时(在brand_id上进行分面) http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=brand_id&q=*:*
faceting输出以对象表示法返回:
"facet_counts": {
"facet_queries": { }
"facet_fields": {
"brand_id": [
{"1350492":14},
{"1350578":12},
{"1350600":11},
{"1350617":8}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用'category_id'作为构面字段重复相同的请求会返回数组符号 http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=category_id&q=*:*
"facet_counts":{
"facet_queries":{},
"facet_fields":{
"category_id":[
"230",20,
"259",13,
"154",12,
"249",11
]
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法强制对象符号格式化?我正在使用Solr 3.6
- 更新 -
使用XML格式返回正确的结果:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="brand_id">
<int name="269115">136</int>
<int name="269394">110</int>
</lst>
<lst name="category_id">
<int name="1348814">228</int>
<int name="1350591">218</int>
</lst>
Run Code Online (Sandbox Code Playgroud) 在设置架构时是否内置了构面搜索,或者您是否需要执行某些操作来设置它?
它是否基本上在您设置为可排序的所有字段上开箱即用?
那么你只需使用fq查询语法,它将返回facet xml以及搜索结果?
有没有关于这个的好文章帮助你第一次?