我在facets上有一些问题,用空格标记标签。
我有以下映射:
curl -XPOST "http://localhost:9200/pictures" -d ' { "mappings" : { "pictures" : { "properties" : { "id": { "type": "string" }, "description": {"type": "string", "index": "not_analyzed"}, "featured": { "type": "boolean" }, "categories": { "type": "string", "index": "not_analyzed" }, "tags": { "type": "string", "index": "not_analyzed", "analyzer": "keyword" }, "created_at": { "type": "double" } } } } }'
curl -X POST "http://localhost:9200/pictures/picture" -d '{ "picture": { "id": "4defe0ecf02a8724b8000047", "title": "Victoria Secret PhotoShoot", "description": "From France and Italy", "featured": true, "categories": [ "Fashion", "Girls", ], "tags": [ "girl", "photoshoot", "supermodel", "Victoria Secret" ], "created_at": 1405784416.04672 } }'
我的问题是:
curl -X POST "http://localhost:9200/pictures/_search?pretty=true" -d ' { "query": { "text": { "tags": { "query": "Victoria Secret" } } }, "facets": { "tags": { "terms": { "field": "tags" } } } }'
输出结果为:
{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 0, "max_score" : null, "hits" : [ ] }, "facets" : { "tags" : { "_type" : "terms", "missing" : 0, "total" : 0, "other" : 0, "terms" : [ ] } } }
现在,我在facets中得到了total 0,在hits中得到了total:0
知道为什么它不能工作吗?
我知道,当我从标记中删除关键字分析器并使其为“not_analysis”时,我会得到结果。
但是仍然存在区分大小写的问题。
如果通过删除关键字分析器来运行上述相同的查询,则得到的结果是:
facets: { tags: { _type: terms missing: 0 total: 12 other: 0 terms: [ { term: photoshoot count: 1 } { term: girl count: 1 } { term: Victoria Secret count: 1 } { term: supermodel count: 1 } ] } }
这里的Victoria Secret在“not_analysis”中区分大小写,但它在计数中占用空间,但当我用小写作为“Victoria Secret”查询时,它不会给出任何结果。
有什么建议吗??
谢谢,
Suraj
第一个例子对我来说并不完全清楚。如果您使用KeywordAnalyzer,这意味着该字段将按原样进行索引,但是完全不分析该字段更有意义,这是一样的。您发布的映射包含两个
"index": "not_analyzed", "analyzer": "keyword"
这没什么意义。如果您不分析字段,为什么要为它选择分析器?
当然,除此之外,如果不分析字段,标记Victoria Secret
将按原样索引,因此查询Victoria Secret
将不匹配。如果您希望它不区分大小写,您需要定义一个使用KeyworkTokenizer的自定义分析器,因为您不希望标记它和LowerCaseTokenFilter。可以通过索引设置分析部分定义自定义分析器,然后在映射中使用它。但是这样,面总是小写的,我想这是你不喜欢的。这就是为什么最好定义一个多字段,并使用两种不同的文本分析对字段进行索引,一种用于方面,另一种用于搜索。
您可以像这样创建索引:
curl -XPOST "http://localhost:9200/pictures" -d '{
"settings" : {
"analysis" : {
"analyzer" : {
"lowercase_analyzer" : {
"type" : "custom",
"tokenizer" : "keyword",
"filter" : [ "lowercase"]
}
}
}
},
"mappings" : {
"pictures" : {
"properties" : {
"id": { "type": "string" },
"description": {"type": "string", "index": "not_analyzed"},
"featured": { "type": "boolean" },
"categories": { "type": "string", "index": "not_analyzed" },
"tags" : {
"type" : "multi_field",
"fields" : {
"tags": { "type": "string", "analyzer": "lowercase_analyzer" },
"facet": {"type": "string", "index": "not_analyzed"},
}
},
"created_at": { "type": "double" }
}
}
}
}'
然后,当您在该字段上搜索时,自定义lowercase_analyzer也将默认应用于文本查询,以便您可以搜索Victoria Secret
或Victoria Secret
并返回结果。您需要更改facet部分,并在新的tags.facet
字段上创建facet,该字段不进行分析。
此外,您可能希望查看匹配查询,因为在最新的elasticsearch版本(0.19.9)中不推荐使用文本查询。
本文向大家介绍忘记Mysql密码的解决办法小结,包括了忘记Mysql密码的解决办法小结的使用技巧和注意事项,需要的朋友参考一下 方法1: 用SET PASSWORD命令 方法2:用mysqladmin 如果root已经设置过密码,采用如下方法 方法3: 用UPDATE直接编辑user表 在丢失root密码的时候,可以这样 希望对大家有所帮助。
我实际上正在用Java开发一个文本解析器,有人要求我通过用它解析HTML来增强它。解析器的目的是将被解析的文件分成另外三个文件,一个包含文件中包含的所有单词,一个包括所有句子,另一个包含所有问题。 *.txt部分工作得很好,但我在解析HTML时遇到了一个问题。 我创建了一个扩展名为*.txt的临时文件,并将其在我的文本解析器中传递,但是如果我传递一个带有HTML文件链接的URL,其格式如下所示:
问题内容: 当使用Python的etree创建XML文件时,如果使用将空标签写入文件,则会得到: 不幸的是,即使它是正确的标签,我们在Fortran中使用的XML解析器库也无法处理此问题。它需要看到: 有没有一种方法可以更改格式化规则或etree中的某些方法来完成这项工作? 问题答案: 从Python 3.4开始,您可以在函数和方法中使用参数: 在较旧的Python版本(2.7到3.3)中,作为一
感谢这里关于堆栈溢出的答案和一些小时的工作;),我的语法终于如期发挥作用了。只是一些小问题或混乱的情况。 以下是我对lexer的定义: 下面是解析器的定义: 看起来lexer文件开头的成员定义在带有ANTLR4插件的IntelliJ IDEA中不起作用?还是我在定义中遗漏了什么。 在标题的定义中,我试图允许开始空白。但是无论我尝试什么,解析过程都失败了。我添加了一个WS标记[\t],但是当我将WS
问题内容: 尝试在基于SVG的可视化中使用SVG标记元素时遇到问题。我正在将更改添加到Web应用程序中,该更改恰好在每个页面上都包含一个基本标记,以便对CSS文件,javascript文件等的任何引用都可以是相对的。 我下面有一些示例代码可以重现该问题。有一个线元素和一个标记元素定义。该标记元素由其’marker- end’属性中的行通过uri和标记id引用。没有基本标签,箭头显示正常。使用基本标
您可以在当前光标处作一个标记,以便快速返回 m标记名称 定义标记。标记名称为一个字符 `标记名称 返回标记 mx 将当前光标处定义为标记 x `x 返回标记 x :marks 查看标记列表