我有一个问题,映射分析器到现场。
我的优先级是基于搜索(我想要根据给定的文本自动完成搜索)1必须从左侧匹配(1优先级),2在给定文本中的任何单词(2优先级),3任何字符类似于给定文本中的组合(3优先级)
**1. I created field mapping with the custom analyzer.**
`
"properties" => [
"name" => [
"type" => "search_as_you_type",
"analyzer" => "my_tokenizer",
],
];
`
**2. created a custom analyzer**
{
"settings": {
"analysis": {
"tokenizer": {
"my_tokenizer": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10,
"token_chars": ["letter", "digit", "symbol"]
}
},
"analyzer": {
"my_analyzer":{
"tokenizer": "my_tokenizer"
}
}
}
}
}
**3. Search query**
'query' => [
'query_string' => [
'default_field' => "name",
'query' => "test",
'default_operator' => "AND",
],
],
**The result I am getting:**
TEST
ABC TEST
NAKT TZY TEST
TEST POST
TEST VN
**What I want :**
TEST
TEST VN
TEST POST
ABC TEST
NAKT TZY TEST发布于 2022-04-27 15:23:49
我不明白为什么要为要用作自动完成的search_as_you_type字段使用分析器。search_as_you_type已经用ngram创建了子字段。
我的地图是这样的:
"mappings": {
"properties": {
"name": {
"type": "search_as_you_type"
}
}
}下面的查询按您的要求运行。
{
"query": {
"multi_match": {
"query": "test",
"type": "bool_prefix",
"fields": [
"name",
"name._2gram",
"name._3gram"
]
}
}
}见更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-as-you-type.html
https://stackoverflow.com/questions/72029204
复制相似问题