我有一个字段定义为
<fieldType name="text_ws_lc" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
对于此类型的字段,在没有区分大小写的情况下搜索效果很好.但是我希望插入到字段中的原始值不是小写值.是否可以从索引分析器中删除LowerCaseFilterFactory并获得此功能?翼
<fieldType name="text_ws_lc_std" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud) 我不确定如何通过对象data
元素中的数据函数来进行研究ggplot
.在下面的玩具示例中,我想要做的是这样的:
df <- data.frame(x=1:8, y=runif(8), z=8:1)
ggplot(df, aes(x=x, y=y)) + geom_point() + facet_wrap( ~ (z %% 2))
Run Code Online (Sandbox Code Playgroud)
但这给出了错误:Error in layout_base(data, vars, drop = drop) : At least one layer must contain all variables used for facetting
.
我可以通过转换数据框来实现所需的结果:
ggplot(transform(df, z=z%%2), aes(x=x, y=y)) + geom_point() + facet_wrap( ~ z)
Run Code Online (Sandbox Code Playgroud)
但通常不希望使用这样的转换,例如,如果我已经获得了一个ggplot
对象,并且我想为它添加一些特殊的方面.
我正在使用ggplot2创建一个boxplot.我能够成功创建boxplot但是在ggplot2中将两个要素与facet合并时遇到问题:
>tmpdf
value treat FoldChange Gene Pvalue.Adj
523.8589 Normal -1.899 A 0.02828
489.7638 Normal -1.899 A 0.02828
642.0126 Cancer -1.899 A 0.02828
928.8136 Cancer -1.899 A 0.02828
624.7892 Normal -1.899 A 0.02828
53.8685 Normal -7.135 B 0.00012
184.6473 Normal -7.135 B 0.00012
76.2712 Cancer -7.135 B 0.00012
48.0607 Cancer -7.135 B 0.00012
177.9528 Normal -7.135 B 0.00012
4581.2847 Normal -1.886 C 0.04924
7711.3411 Normal -1.886 C 0.04924
6007.9852 Cancer -1.886 C 0.04924
5940.9232 Cancer -1.886 C 0.04924
4433.0949 Normal -1.886 …
Run Code Online (Sandbox Code Playgroud) 我想在facet wrap的标签中创建两种不同大小的文本.
例如:
test <- read.csv(paste0(path, "Costello Artvgl2 for Stack.csv"), sep = ";", dec = ",", header = T)
str(test)
test$Wert <- factor(test$Wert, levels = c("one","two","three","four","five","six"))
test$Sampling.site <- factor(test$Sampling.site, levels = c("Species X Area T","Species Y Area T","Species X Area A","Species Y Area B","Species X Area B","Species Y Area C"))
levels(test$Sampling.site) <- c("Species X\nTotal catch (n=133)", "Species Y\nTotal catch (n=185)", "Species X\nSampling area A (n=57)", "Species Y\nSampling area B (n=122)",
"Species X\nSampling area B (n=76)", "Species …
Run Code Online (Sandbox Code Playgroud) 我已经花了整整一个星期的时间没有解决它的希望.我正在关注关于电子商务搜索和分面过滤等的这篇(相当古老的)文章,它到目前为止工作得很好(搜索结果很棒,当在查询中应用过滤器时,聚合效果很好.我正在使用ElasticSearch 6.1.1.
但是因为我想让我的用户在facet上执行多项选择,所以我已经将过滤器移到了post_filter部分.这仍然有效,它正确地过滤结果并准确显示整个文档集的聚合计数.
在StackOverflow上阅读这个问题之后,我意识到我必须使用"过滤"聚合和"特殊"聚合来执行一些疯狂的杂技,以相互修剪聚合以显示正确的计数并允许同时使用多个过滤器.我已经要求对这个问题做一些澄清,但还没有回复(这是一个老问题).
我一直在努力解决的问题是在嵌套字段上获取一组过滤聚合,其中所有方面都使用所有过滤器进行过滤.
我的计划是使用常规聚合(未过滤)并保持选定的构面聚合未经过滤(以便我可以选择多个条目),但过滤所有其他聚合与当前选定的构面,以便我只能显示我仍然可以使用的过滤器应用.
但是,如果我在文档上使用相同的过滤器(工作正常),并将过滤器放在过滤的聚合中,则它们无法按预期工作.这些都是错的.我知道在过滤器之前计算聚合,这就是我在我想要的聚合上复制过滤器的原因.
这是我的查询:
"query": {
"bool": {
"must": [
{
"multi_match": {
"fields": [
"search_data.full_text_boosted^7",
"search_data.full_text^2"
],
"type": "cross_fields",
"analyzer": "full_text_search_analyzer",
"query": "some book"
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这里没什么特别的,它效果很好并且返回相关结果.
这是我的过滤器(在post_filter中):
"post_filter" : {
"bool" : {
"must" : [
{
"nested": {
"path": "string_facets",
"query": {
"bool" : {
"filter" :
[
{ "term" : { "string_facets.facet_name" : "Cover colour" } }, …
Run Code Online (Sandbox Code Playgroud) 我正在写一个lambda演算解释器,用于娱乐和练习.我通过添加一个ctype
将标点符号定义为空格的构面来获得iostream正确地标记化标识符:
struct token_ctype : ctype<char> {
mask t[ table_size ];
token_ctype()
: ctype<char>( t ) {
for ( size_t tx = 0; tx < table_size; ++ tx ) {
t[tx] = isalnum( tx )? alnum : space;
}
}
};
Run Code Online (Sandbox Code Playgroud)
(classic_table()
可能更干净但是在OS X上不起作用!)
然后在我点击标识符时交换方面:
locale token_loc( in.getloc(), new token_ctype );
…
locale const &oldloc = in.imbue( token_loc );
in.unget() >> token;
in.imbue( oldloc );
Run Code Online (Sandbox Code Playgroud)
网上似乎有一些令人惊讶的lambda演算代码.到目前为止,我发现的大部分内容都充满了unicode ?
字符.所以我想尝试添加Unicode支持.
但ctype<wchar_t>
完全不同于ctype<char>
.没有主表; 有两种方法do_is
x2 do_scan_is
,和 …
我不确定这是否可行,但我希望能够更加密切地控制返回的方面,而不仅仅是包含和排除.
具体来说,我有一个允许用户按'facetA'和'facetB'过滤的界面.它看起来有点像这样
Filter by - facetA: article (20), image (6), activity (14) - facetB: cats (23), dogs(12), hedgehogs(5)
界面清楚地表明facetA在层次结构中高于facetB.我希望facetA完全持久,facetB也算是持久的,但依赖于facetA的选择.
因此,界面可能会对facetB的更改做出反应:
Filter by - facetA: article (20), image (6), activity (14) - facetB: cats (23), dogs(12), hedgehogs(5)
即没有一个计数改变.
但它会对这样的facetA变化作出反应:
Filter by - facetA: article (20), image (6), activity (14) - facetB: cats (15), dogs(4), hedgehogs(1)
即,facetB计数变化以反映在应用facetA过滤器之后可用的内容.
干得好
&facet.field = {!EX = DT} FIELDA&facet.field = {!EX = DT} fieldB
没有实现我想要的,但它很接近.我在solr wiki中发现这方面的说明非常模糊 - 就像我甚至不知道'dt'代表什么.谁能详细说明?我可以更好地控制如何排除计数吗?
交互式地,这个例子工作正常:
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p + facet_grid(. ~ vs)
Run Code Online (Sandbox Code Playgroud)
现在,使用公式接口创建一个函数并使用aes_string
它做同样的事情,它不起作用(错误是:) Error in layout_base(data, cols, drop = drop) : At least one layer must contain all variables used for facetting
:
tf <- function(formula, data) {
res <- as.character(formula[[2]])
fac2 <- as.character(formula[[3]][3])
fac1 <- as.character(formula[[3]][2])
# p <- ggplot(aes_string(x = fac1, y = res), data = data)
# p <- p + geom_point() # original attempt
p <- ggplot() # This is Joran's trick, but …
Run Code Online (Sandbox Code Playgroud) C++标准定义了六个类别方面的:collate
,ctype
,monetary
,numeric
,time
,和messages
.
我已经知道了前五个的用法,但我不知道何时以及如何使用最后一个:std::locale::messages
.
任何说明性例子?
我的ggplot有以下代码 - facet_wrap函数在页面上为每个Name绘制20个图,沿x轴有5个Pcode.我想计算每个Name的平均TE.Contr,并将该值绘制为每个图上的水平线(由Facet_wrap拆分).目前,我的代码绘制了ALL TE.Contr的平均值.值而不是平均值TE.Contr.具体名称.
T<-ggplot(data = UKWinners, aes(x = Pcode, y = TE.Contr., color = Manager)) + geom_point(size =3.5)+ geom_hline(aes(yintercept = mean(TE.Contr.)))
T<-T + facet_wrap(~ Name, ncol = 5)
Run Code Online (Sandbox Code Playgroud)