всем привет . нужна ваша помощь
пытаюсь искать через wildcard и should , но оно работает как-то странно .
'bool' => [
"should" => [
[
"wildcard" => [ "product_name.letter" => "*" . $this->formatQueryStr($query) . "*" ]
],
[
"wildcard" => [ "product_name.digit" => "*" . $this->formatQueryStr($query) . "*" ]
]
],
],
маппинг
'settings' => [
"analysis" => [
"analyzer" => [
"letter_analyzer" => [
"type" => "custom",
"tokenizer" => 'letter_tokenizer',
"filter" => [
"lowercase"
]
],
"digit_analyzer" => [
"type" => "custom",
"tokenizer" => 'digit_tokenizer'
],
],
"tokenizer" => [
'letter_tokenizer' => [
"type" => "char_group",
"tokenize_on_chars" => [
"whitespace",
"punctuation",
"symbol",
"digit"
]
],
'digit_tokenizer' => [
"type" => "char_group",
"tokenize_on_chars" => [
"whitespace",
"punctuation",
"symbol",
"letter"
]
],
],
]
],
'mappings' => [
'product' => [
'properties' => [
'id' => [
'type' => 'integer'
],
'model' => [
'type' => 'text'
],
'image' => [
'type' => 'text'
],
'product_name' => [
'type' => 'text',
"analyzer" => "keyword",
"fields" => [
"letter" => [
"type" => "text",
"analyzer" => "letter_analyzer",
],
"digit" => [
"type" => "text",
"analyzer" => "digit_analyzer",
],
],
]
]
]
]
как я понимаю оно должно пробегатся по токенам и искать по ним фразу нужную .вот например есть 4Good T700i и токены [4,Good,T,700,i] если я ищу good ,то все ок находит , но если написать 4good то ничего нет , хотя по логике оно должно найти "4" через второй wildcard и good через первый . или я что-то неправильно понимаю?