我试着这样查询:
{
"match": {
"query": "100",
"fields": "description",
"type": "phrase_prefix"
}
}
但是,如果我搜索“100”,想要找到一个“description”为“pipe 100mm”的文档,它不会给我带来这个文档作为结果,它只匹配“100”作为其他数字的前缀(即10056)或作为一个完整的单词。
我正在使用Javascript客户端。描述是Map为文本的字段。
在这种情况下,phrase_prefix有什么限制,我可以在查询中更改什么,以便获得想要的结果?
我的字段Map是
{
"description": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"analyzer": "ac_filter"
}
所示的分析仪构建为
"analysis": {
"analyzer": {
"accent_filter": {
"filter": [
"lowercase",
"asciifolding"
],
"char_filter": [
"alphabets_char_filter"
],
"type": "custom",
"tokenizer": "standard"
}
},
"char_filter": {
"alphabets_char_filter": {
"pattern": "[^\\p{L}\\p{Nd}]",
"type": "pattern_replace",
"replacement": " "
}
}
}
我还没有尝试使用ngram或search_as_you_type,因为我想知道为什么上面的方法不起作用。如果没有解决方法,请告诉我。
谢谢。
2条答案
按热度按时间798qvoo81#
使用match_phrase_prefix
响应
e4yzc0pl2#
您可以使用multi match query。
例如: