作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下情况:
简单的分析器处理文本“棕色和绿色的狐狸很快”,并将各个小写字母添加到索引中。
我想对我的索引使用以下查询短语:“quick brown f”
我使用match_phrase_prefix来运行此搜索:
{
"query": {
"match_phrase_prefix" : {
"message" : {
"query" : "quick brown f",
"max_expansions" : 10
}
}
}
}
This query works by creating a phrase query out of quick and brown (i.e. the term quick must exist and must be followed by the term brown).
最佳答案
edge_ngram
分析器应该执行您想要的操作。如果将min_gram值设置为1并将max gram值设置为10进行设置,则文档将存储必要的标记。然后,您可以将标准分析器应用于您的查询文本,并将其与edge_ngram文档字段进行匹配。
示例in the documentation与您请求的解决方案几乎完全相同。请注意,在查询中使用了显式的and
运算符,以确保您的所有搜索标记(部分或其他)都匹配。
从5.6的文档中:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"autocomplete": {
"tokenizer": "autocomplete",
"filter": [
"lowercase"
]
},
"autocomplete_search": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10,
"token_chars": [
"letter"
]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"title": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "autocomplete_search"
}
}
}
}
}
PUT my_index/doc/1
{
"title": "Quick Foxes"
}
POST my_index/_refresh
GET my_index/_search
{
"query": {
"match": {
"title": {
"query": "Quick Fo",
"operator": "and"
}
}
}
}
关于elasticsearch - 如何在Elasticsearch中处理无序多词查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399956/
我是一名优秀的程序员,十分优秀!